【问题标题】:React Admin: Can I use another field for <ReferenceInput>, other than "id"?React Admin:我可以为 <ReferenceInput> 使用“id”以外的其他字段吗?
【发布时间】:2018-12-03 22:07:59
【问题描述】:

有没有办法为ReferenceInput 使用不同的参考字段(id 除外)?

例如:
我有一个languages 资源,我想使用language_code 字段填充它。
注意,我不想使用languagesid 字段,我想使用code字段。

我已经设法通过使用以下方法使其工作:

<ReferenceInput 
  label="Language code" 
  source="language_code" 
  reference="languages"
>
  <SelectInput optionText="name" optionValue="code" />
</ReferenceInput>

唯一的问题是:

从选择输入中选择语言后,ReferenceInput 尝试使用code 字段而不是id 字段获取资源,这会返回 404 错误。

【问题讨论】:

  • 您的意思是它尝试使用id 字段而不是code 字段来获取?
  • 不,它使用code 字段(我假设因为optionValue 设置为code,所以它使用代码填充ReferenceInput)。所以它获取languages/en 而不是languages/1。这会失败,因为 languages 端点在 URL 中需要 id 而不是代码。

标签: reactjs admin-on-rest react-admin


【解决方案1】:

作为对资源中languages 的引用存储的值必须是其标识符。确实,如果您在资源的显示视图中添加 ReferenceField,它如何获取没有 id 的语言?

你有两个选择:

  • 让您的 API 支持 languages/en 路由
  • language_idlanguage_code 存储在您的资源中,并创建一个自定义ReferenceInput,它将在选择后返回这两个值

【讨论】:

    【解决方案2】:

    我们是否知道我们将“id”字段用于&lt;ReferenceInput&gt; 的根本原因?

    在那张纸条上,here's an official explanation from react-admin
    国际海事组织,如果我们从react-admin 中捕捉到这一点,那么我们可以(尝试)使用任何其他字段,也许!

    在您的情况下,获取数据并将渲染委托给&lt;SelectInput&gt;,它将可能的选择作为选择属性传递给该&lt;SelectInput&gt;。这很好用,因为您可以选择“语言”。

    您知道optionValue="id" 是默认值吗?

    两种可能的解决方案:

    • 删除optionValue="code"

    • 您能找到将您的"code" 映射到"id" 的方法吗?
      请记住,在这种情况下,&lt;SelectInput&gt; 填充了来自 &lt;ReferenceInput&gt;choices 属性,
      choices=[{id='', value=''}, {...}]

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 1970-01-01
      • 2020-02-22
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2022-01-18
      相关资源
      最近更新 更多