如何将 key.value 的数组映射到 Chip?我有一个 {k,v} 地图列表
How do I map an array of key.value to Chip? I have a list of a {k,v} map
Person 的输入 json - 有一个 xrefAccounts{key,value} 映射
在“SubSys”列中,我想将“LIBRARY”和“SPORTS”显示为标签。
Person json 对象具有所有需要的值,但我不知道如何在 DataGrid 组件中映射它。
我正在使用 react-admin 3.10
[{
...
"xrefAccounts": {
"LIBRARY": {
"id": "1",
"xrefSystemId": "LIBRARY"
},
"SPORTS": {
"id": "1",
"xrefSystemId": "SPORTS"
}
}
},
export const PersonList = props => (
<List filters={<PersonFilter />} {...props} >
<Datagrid rowClick="edit">
...
<ReferenceArrayField label="SubSys" reference="id" source="xrefAccounts.value">
{/* Find how to put multiple xref in one column SubSys */}
<SingleFieldList>
<ChipField source="value.xrefSystemId" />
</SingleFieldList>
</ReferenceArrayField>
<EditButton />
</Datagrid>
</List>
);
我想在此图像中显示类似于标签["Sport" "Code" ]的 SubSys ["Library" "Sports"]
它不起作用,因为您在 不是 数组的数据上使用 ArrayField
- 它是一个对象!
所以最好的办法实际上是修复您的 API 响应结构。
但是......如果你不能这样做 - 当我看到你的尝试时,也许我可以通过自定义字段组件建议以下解决方法:
<XrefAccountsField source="xrefAccounts" />
里面
const XrefAccountsField = ({source, record = {}}) => {
const accountsObject = record[source];
// Convert the record to an array
const accounts = {
accountsArr: accountsObject ? Object.keys(accountsObject).map((key) => accountsObject[key]) : []
};
return (
<ArrayField source="accountsArr" record={accounts}>
<SingleFieldList>
<ChipField source="xrefSystemId" />
</SingleFieldList>
</ArrayField>
)
}
Person 的输入 json - 有一个 xrefAccounts{key,value} 映射
在“SubSys”列中,我想将“LIBRARY”和“SPORTS”显示为标签。
Person json 对象具有所有需要的值,但我不知道如何在 DataGrid 组件中映射它。
我正在使用 react-admin 3.10
[{
...
"xrefAccounts": {
"LIBRARY": {
"id": "1",
"xrefSystemId": "LIBRARY"
},
"SPORTS": {
"id": "1",
"xrefSystemId": "SPORTS"
}
}
},
export const PersonList = props => (
<List filters={<PersonFilter />} {...props} >
<Datagrid rowClick="edit">
...
<ReferenceArrayField label="SubSys" reference="id" source="xrefAccounts.value">
{/* Find how to put multiple xref in one column SubSys */}
<SingleFieldList>
<ChipField source="value.xrefSystemId" />
</SingleFieldList>
</ReferenceArrayField>
<EditButton />
</Datagrid>
</List>
);
我想在此图像中显示类似于标签["Sport" "Code" ]的 SubSys ["Library" "Sports"]
它不起作用,因为您在 不是 数组的数据上使用 ArrayField
- 它是一个对象!
所以最好的办法实际上是修复您的 API 响应结构。
但是......如果你不能这样做 - 当我看到你的尝试时,也许我可以通过自定义字段组件建议以下解决方法:
<XrefAccountsField source="xrefAccounts" />
里面
const XrefAccountsField = ({source, record = {}}) => {
const accountsObject = record[source];
// Convert the record to an array
const accounts = {
accountsArr: accountsObject ? Object.keys(accountsObject).map((key) => accountsObject[key]) : []
};
return (
<ArrayField source="accountsArr" record={accounts}>
<SingleFieldList>
<ChipField source="xrefSystemId" />
</SingleFieldList>
</ArrayField>
)
}