如何在 grid/table 中呈现来自 axios.get() 的响应
How to render response from axios.get() in grid/table
我的应用程序的特定部分的功能存在一些问题。
我在 React 中有一个功能组件 'Review Rounds',它执行 axios.get 请求。然后将响应用于 'rounds' 数组的 setState。这部分工作正常。这是回应
[
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "1da10881-b27d-46a5-883e-02296c9a6ab8",
"roundId": "1da10881-b27d-46a5-883e-02296c9a6ab8",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "2abac091-57f4-4dec-8c0a-7b370794b081",
"roundId": "2abac091-57f4-4dec-8c0a-7b370794b081",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "b68724dc-36b2-41b3-b677-b7ff98bac875",
"roundId": "b68724dc-36b2-41b3-b677-b7ff98bac875",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "ec99c8cf-d180-4e2a-a246-875f7342d867",
"roundId": "ec99c8cf-d180-4e2a-a246-875f7342d867",
"idConfirmed": false
}]
然后我只想在 table 中显示一个 videoLink 和 roundId 属性。
我创建了一个像这样的列变量
//Table Cols
const columns = React.useMemo(
()=>[
{
Header:"videoLink",
accessor:"videoLink"
},
{
Header:"roundId",
accessor:"roundId"
},
],
[]
)
然后定义table props 并在列和轮中传递:
const{
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} =useTable({columns , rounds})
我遇到的问题是回合(在这个阶段似乎不包含任何数据)尽管它以前包含我需要的所有信息。
我对国家做错了什么吗?或使用效果方法?
下面是这个功能组件的完整代码:
const ReviewRounds = () => {
const [rounds, setRounds]=useState([]);
const fetchVids=()=>{
axios.get(process.env.REACT_APP_URL_All_ROUNDS)
.then(res=>{
console.log("Rounds", res.data)
setRounds(res.data)
});
};
useEffect(()=>{
fetchVids();
},[])
//Table Cols
const columns = React.useMemo(
()=>[
{
Header:"videoLink",
accessor:"videoLink"
},
{
Header:"roundId",
accessor:"roundId"
},
],
[]
)
const{
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} =useTable({columns , rounds})
return (
<table {...getTableProps()} style={{ border: 'solid 1px blue' }}>
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th
{...column.getHeaderProps()}
style={{
borderBottom: 'solid 3px blue',
background: 'aliceblue',
color: 'black',
fontWeight: 'normal',
}}
>
{column.render('Header')}
</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map(row => {
prepareRow(row)
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return (
<td
{...cell.getCellProps()}
style={{
padding: '10px',
border: 'solid 1px gray',
background: 'aliceblue',
}}
>
{cell.render('Cell')}
</td>
)
})}
</tr>
)
})}
</tbody>
</table>
)
}
导出默认 ReviewRounds;
我得到的错误是:
TypeError: Cannot read properties of undefined (reading 'forEach')
会说您的 useTable 挂钩不希望作为数据的道具被传递 rounds
,因为状态代码似乎没问题。
尝试类似 useTable({columns , rows: rounds})
或钩子期望的任何东西。
我的应用程序的特定部分的功能存在一些问题。 我在 React 中有一个功能组件 'Review Rounds',它执行 axios.get 请求。然后将响应用于 'rounds' 数组的 setState。这部分工作正常。这是回应
[
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "1da10881-b27d-46a5-883e-02296c9a6ab8",
"roundId": "1da10881-b27d-46a5-883e-02296c9a6ab8",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "2abac091-57f4-4dec-8c0a-7b370794b081",
"roundId": "2abac091-57f4-4dec-8c0a-7b370794b081",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "b68724dc-36b2-41b3-b677-b7ff98bac875",
"roundId": "b68724dc-36b2-41b3-b677-b7ff98bac875",
"idConfirmed": false
},
{
"label": null,
"consent": false,
"users": [],
"videoLink": "Hospital.mp4",
"id": "ec99c8cf-d180-4e2a-a246-875f7342d867",
"roundId": "ec99c8cf-d180-4e2a-a246-875f7342d867",
"idConfirmed": false
}]
然后我只想在 table 中显示一个 videoLink 和 roundId 属性。
我创建了一个像这样的列变量
//Table Cols
const columns = React.useMemo(
()=>[
{
Header:"videoLink",
accessor:"videoLink"
},
{
Header:"roundId",
accessor:"roundId"
},
],
[]
)
然后定义table props 并在列和轮中传递:
const{
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} =useTable({columns , rounds})
我遇到的问题是回合(在这个阶段似乎不包含任何数据)尽管它以前包含我需要的所有信息。 我对国家做错了什么吗?或使用效果方法?
下面是这个功能组件的完整代码:
const ReviewRounds = () => {
const [rounds, setRounds]=useState([]);
const fetchVids=()=>{
axios.get(process.env.REACT_APP_URL_All_ROUNDS)
.then(res=>{
console.log("Rounds", res.data)
setRounds(res.data)
});
};
useEffect(()=>{
fetchVids();
},[])
//Table Cols
const columns = React.useMemo(
()=>[
{
Header:"videoLink",
accessor:"videoLink"
},
{
Header:"roundId",
accessor:"roundId"
},
],
[]
)
const{
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} =useTable({columns , rounds})
return (
<table {...getTableProps()} style={{ border: 'solid 1px blue' }}>
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th
{...column.getHeaderProps()}
style={{
borderBottom: 'solid 3px blue',
background: 'aliceblue',
color: 'black',
fontWeight: 'normal',
}}
>
{column.render('Header')}
</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map(row => {
prepareRow(row)
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return (
<td
{...cell.getCellProps()}
style={{
padding: '10px',
border: 'solid 1px gray',
background: 'aliceblue',
}}
>
{cell.render('Cell')}
</td>
)
})}
</tr>
)
})}
</tbody>
</table>
)
}
导出默认 ReviewRounds;
我得到的错误是:
TypeError: Cannot read properties of undefined (reading 'forEach')
会说您的 useTable 挂钩不希望作为数据的道具被传递 rounds
,因为状态代码似乎没问题。
尝试类似 useTable({columns , rows: rounds})
或钩子期望的任何东西。