嵌套参考字段

时间:2018-08-08 12:56:47

标签: react-admin

为了检索设备类型,我正在使用,它将检索设备模型,然后使用另一个通过设备模型的字段“ typeID”引用设备类型以检索设备类型。

但是它显示以下警告:

  

警告:道具类型失败:道具翻译无效   布尔值提供给ReferenceField,这是预期功能。

图像代表数据模型(设备具有设备模型,而设备模型具有设备类型)

enter image description here

3 个答案:

答案 0 :(得分:1)

这不是一个完美的解决方法,但是为了解决using System.Collections; using System.Collections.Generic; using UnityEngine; public class LookAt : MonoBehaviour { public Transform playerShip; // Update is called once per frame void Update () { transform.LookAt(playerShip); } } 问题,您可以创建一个包装器,并拔出该道具以防止其通过。

Assets/LookAtShip.cs(7,9): error CS0118: `UnityEngine.Component.gameObject' is a `property' but a `type' was expected

在对此进行故障排除时,我还收到有关嵌套translateChoice标签的错误。通过将父项const SubReference = ({ translateChoice, children, ...props }) => ( <ReferenceField {...props}>{children}</ReferenceField> ); 中的a属性设置为linkType,我能够使错误消失

false

答案 1 :(得分:0)

我有同样的问题,我认为这是一个实际的错误。我评论了相应的github问题https://github.com/marmelab/react-admin/issues/2140

我研究了ReferenceField的代码,据我了解,这是一个实际的错误。 ReferenceField需要一个translateChoice属性的函数,但在内部将布尔值传递给ReferenceFieldView。 如果将一个ReferenceField嵌套到另一个false中,则内部translateChoice作为I want to implement swipe up to zoom in and swipe down to zoom out feature属性,并且理所当然地抱怨它是一个布尔值而不是一个函数。

答案 2 :(得分:0)

我发现一个更好的解决方案有点像hack,但似乎更有效。

以问题示例为例,只需要<ReferenceField> 即可获得equipmentType,

    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>一样,获取设备的equipmentModel。需要使用标签是因为RA使用第一个<ReferenceField><Datagrid>中显示列标题,如果您使用国际化,则应将此翻译功能应用于该属性的正确资源。

<ReferenceController>获取记录,并将其作为referenceRecord传递给子函数,该子函数将呈现该组件以进行字段表示。无需呈现字段组件,而是呈现<ReferenceField>来获取嵌套关系,然后显示该字段。由于<ReferenceFieldController>仅将控制器道具传递给其子级,而字段组件的道具在嵌套关系中不执行您想要的操作,因此您必须将它们显式传递给<ReferenceField>。您需要将record的{​​{1}}作为<ReferenceField>传递,因为最初referenceRecord || {}尚未被获取,并且referenceRecord不能与null一起使用。< / p>

<ReferenceField>中的linkType设置为false会使它不呈现将用户重定向到错误路由的<ReferenceFieldController组件。