如何在 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}) 或钩子期望的任何东西。