首页 > 解决方案 > React-Admin:如何处理对象列表中的输入源

问题描述

react-admin中,我有一个input其来源是对象列表。

<CheckboxGroupInput  source="binded_cameras" choices={choices}/>

binded_cameras列表如下所示:

"binded_cameras": [
    {
       "id": 1,
       "name": "Cam 1",
       "url": "dummyurl.com"
    },
    {
       "id": 4,
       "name": "Cam 2",
       "url": "dummyurl.com"
     }
]

我试图只获取id要处理的列表。
我试过binded_cameras.id了,但当然没有用。
如何操作这个对象列表,并只生成一个 id 列表?

标签: javascriptreactjsreact-admin

解决方案


由于 React-admin 使用 react-final-form,您可以使用 parse() 和 format() 函数在保存到记录和从记录加载时转换输入值,只需将它们作为道具传递给 Input,在本例中为 CheckboxGroupInput:

两个函数的助记符:

parse(): 输入 -> 记录

格式():记录->输入

<CheckboxGroupInput 
    source="binded_cameras" 
    choices={choices}
    parse={ids => ids.map(id => ({id}))}
    format={bindedCameras => bindedCameras.map(b => b.id)}
/>

https://marmelab.com/react-admin/Inputs.html#transforming-input-value-tofrom-record


推荐阅读