为了检索设备类型,我使用了一个将检索设备模型,然后另一个使用设备模型的字段“typeID”来引用设备类型来检索设备类型。

但是它显示以下警告:



图片表示数据模型(一个设备有一个设备模型,一个设备模型有一个设备类型)

react-admin - 嵌套引用字段-LMLPHP

最佳答案

我发现更好的解决方案有点像黑客,但似乎更有效。

以问题示例 为例,其中为了获得设备类型只需要 <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/

10-10 15:21