ReferenceArrayInput 用法与 React Admin 上的关系

ReferenceArrayInput usage with relationships on React Admin

我已遵循 ReferenceArrayInput 的文档 (https://marmelab.com/react-admin/Inputs.html#common-input-props),但它似乎无法处理关系字段。

例如,我的用户(序列化版本)有这个多对多关系:

来自(来自我的 API 的原始回复):

我已经设置了 ReferenceArrayInput 如下:

 <ReferenceArrayInput source="profiles" reference="profiles" >
           <SelectArrayInput optionText="label"  />
</ReferenceArrayInput>

我认为它正在做出适当的调用:

但这是我的结果:

知道我做错了什么吗?

在此先感谢您的帮助!

在文档中,据说 ReferenceArrayInput 需要一个指向数组 os id 的 source prop,基本类型数组,而不是具有 id 的对象数组。看起来您已经在转换来自 api 的原始响应,所以如果您可以再转换一点,将 [{id}] 映射到 [id],它就可以工作。 如果您的应用程序的其他部分希望配置文件是一个对象数组,只需创建一个新的对象条目,如 profilesIds 或 _profiles。

正如 gstvg 所说,ReferenceArrayInput 需要原始类型数组,而不是对象数组。

如果您当前的记录如下:


{
    "id": 1,
    "tags": [
        { id: 'programming', name: 'Programming' },
        { id: 'lifestyle', name: 'Lifestyle' }
     ]
}

并且您有一个资源 /tags,其中 returns 所有标签如下:

[
    { id: 'programming', name: 'Programming' },
    { id: 'lifestyle', name: 'Lifestyle' },
    { id: 'photography', name: 'Photography' }
]

然后你可以这样做(它会select当前记录的标签)

<ReferenceArrayInput
      reference="tags"
      source="tags"
      parse={(value) => value && value.map((v) => ({ id: v }))}
      format={(value) => value && value.map((v) => v.id)}
    >
      <AutocompleteArrayInput />
</ReferenceArrayInput>