【发布时间】:2021-02-21 19:04:04
【问题描述】:
我要做的是从API 中提取数据并使用material-table library 将其显示在表格中。我相信是我没有设法以正确的方式操作对象和数组。
我的 api 返回这个响应:
{
"data": [
{
"id": 7,
"field01": 1,
"field02": 1,
"field03": false,
"people": {
"id": 1,
"name": "John"
},
"id": 8,
"field01": 2,
"field02": 2,
"field03": false,
"people": {
"id": 2
"name": "Mattew"
},
},
]
}
我用来从api 中提取数据的代码:
const [data, setData] = useState([]);
const getValues = async () => {
await api.get("/myrequest")
.then(response => {
setData(response.data.data);
}).catch(error => {
console.log(error);
})
}
我使用material-table创建的表:
<MaterialTable
columns={[
{ title: 'Field 01', field: 'field01' },
{ title: 'Field 02', field: 'field02' },
{ title: 'Field 03', field: 'field03' },
{ title: 'Field 04',field: 'people.name' },
]}
data={data}
title="My table"
/>
查看文档我注意到了这一点:对象作为 React 子级无效(发现:带有键 {id, name} 的对象)。如果您打算渲染一组子项,请改用数组。
我相信这个错误是因为我的 api 返回了一个数组并且表格无法识别。
但我仍然无法做到这一点。我这样做的方式返回以下错误:
道具类型失败:提供给 MaterialTable 的道具 data 无效
【问题讨论】:
-
好吧,试试:
response.data.data. -
@EmanueleScarabattoli 我照我说的做了,这又给我带来了另一个错误。我相信这是因为 api 返回数组中的一个对象。对象作为 React 子对象无效(找到:带有键 {id, name} 的对象)。如果您打算渲染一组子项,请改用数组。
-
好吧,我认为您使用的包不支持嵌套对象。您可以更改包或创建使您的阵列扁平化的适配器。
-
@EmanueleScarabattoli 你能帮我创建这个适配器吗?我对此真的很陌生,我不知道该怎么做。
-
检查答案:)
标签: arrays json reactjs material-table