react-admin中嵌套于ArrayField的ReferenceField的emptyText不生效问题
问题根因
ReferenceField 的 emptyText 属性仅在未配置子组件时生效。你当前为ReferenceField嵌套了FunctionField作为子元素,react-admin会默认由子组件全权负责所有渲染逻辑,哪怕接口未返回对应联系人数据,也不会触发emptyText的兜底渲染。
解决方法
推荐直接将兜底逻辑移到FunctionField的渲染函数中,可同时覆盖外键为空、无权限获取联系人数据两种场景:
// 调整你的全名渲染函数,增加空值判断 const ContactPersonFullNameReversed = (record) => { // 未拿到联系人记录时返回占位文本,后续可直接替换为translate调用 if (!record) return 'test text' // 保留原有全名拼接逻辑 return `${record.lastName} ${record.firstName}` } // 组件部分可删除ReferenceField上的emptyText配置(已不生效) <ArrayField source="notifications" fieldKey="id" key="id"> <Datagrid> <ReferenceField label={translate("resources.contactpersons.single")} source="contactPersonId" reference="contactpersons" link={permissions === roles.SystemAdminRoleID ? "edit" : false} > <FunctionField source="lastName" render={ContactPersonFullNameReversed} /> </ReferenceField> ...
内容的提问来源于stack exchange,提问作者znovotny
相关产品推荐
相关产品推荐

