为了检索设备类型,我使用了一个将检索设备模型,然后另一个使用设备模型的字段“typeID”来引用设备类型来检索设备类型。
但是它显示以下警告:
图片表示数据模型(一个设备有一个设备模型,一个设备模型有一个设备类型)
最佳答案
我发现更好的解决方案有点像黑客,但似乎更有效。
以问题示例 为例,其中为了获得设备类型只需要 <ReferenceField>
,它会是这样的:
const EquipList = ({...props}) => {
<List {...props}>
<Datagrid>
<ReferenceFieldController label="Equipment Type" reference="equipmentModel" source="modelID" linkType={false}>
{({referenceRecord, ...props}) => (
<ReferenceField basePath="/equipmentModel" resource="equipmentModel" reference="equipmentType" source="typeID" record={referenceRecord || {}} linkType="show">
<TextField source="name" />
</ReferenceField>
)}
</RefenceFieldController>
</Datagrid>
</List>
}
在上面的例子中
<ReferenceFieldController>
获取设备的设备模型,就像 <ReferenceField>
。需要标签,因为 RA 使用第一个 <ReferenceField>
来显示 <Datagrid>
中的列标题,如果您使用国际化,您应该将翻译函数应用于此 Prop 上的正确资源。<ReferenceController>
获取记录并将其作为 referenceRecord
传递给子函数,该子函数将为字段呈现呈现组件。不是呈现字段组件,而是呈现 <ReferenceField>
以获取嵌套关系,然后显示字段。由于 <ReferenceFieldController>
仅将 Controller Prop 传递给其子级,并且字段组件的 Prop 不会在嵌套关系中执行您想要的操作,因此您必须将它们显式传递给 <ReferenceField>
。您需要将 record
的 <ReferenceField>
作为 referenceRecord || {}
传递,因为最初尚未获取 referenceRecord
并且 <ReferenceField>
不适用于记录为 null。将
linkType
> 的 <ReferenceFieldController
设置为 false 使其不会呈现将用户重定向到错误路线的 <Link>
组件。关于react-admin - 嵌套引用字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51747361/