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>
我已遵循 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>