react-table 的问题:TypeError:无法读取未定义的属性“forEach”
2020-07-13
4047
我正在开发一个 React 前端,它调用一个 API 并尝试获取返回的 JSON 数据并使用 react-table 将其放入表格格式中。我已经为此困惑了好几天。我只使用 React 的函数和钩子。我的主要组件是:
const [tableJSON, setTableJSON] = useState('');
const [inquiryCount, setInquiryCount] = useState(1);
const [sortByColumn] = useState('INQ_RECEIVE_DATE');
const [sortByDirection] = useState('DESC');
const mid = memberId['usr-memberid'];
const getInquiryData = async () => {
try {
const resp = await INQUIRY_API.inquiryList({ "memberId": mid, inquiryCount, sortByColumn, sortByDirection }, token['usr-token']);
setTableJSON(resp);
//return (resp);
}
catch (error) {
console.log("Data load failed: " + error);
}
}
useEffect(() => {
getInquiryData();
}, [inquiryCount]);
...
...
...
...
<HomeTableRT tabledata={tableJSON} />
我的 HomeTableRT 组件如下所示:
import React, { Fragment, useEffect, useMemo } from 'react'
import '../../css/table.css';
import { useTable, useSortBy } from 'react-table'
const columns = React.useMemo(() => [
{ Header: 'Submitted by', accessor: 'submittedBy' },
{ Header: 'Inquiry PDF', accessor: 'inquiryId_pdf', },
{ Header: 'Report Type', accessor: 'reportType', },],
[])
//const data = React.useMemo(() => JSON.stringify(props.tabledata), [props.tabledata])
const data = React.useMemo(() => props.tabledata, [props.tabledata])
const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable({ columns, data }, useSortBy)
最后一行抛出错误
TypeError:无法读取未定义的属性“forEach”
我已经查看过 react-table repo 中的问题,似乎这是在版本更新中提出的一个问题,但似乎很久以前就解决了。我到处寻找其他线索,但却不知所措!
我正在使用:
react-table": "^7.2.0", "react-scripts": "^3.4.1",
如能得到任何帮助,我们将不胜感激!
2个回答
如果有人忘记将
data
属性传递给
useTable
钩子,也会发生同样的错误。
就我而言,这是参数名称不正确。
const changes = ...;
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} = useTable({ columns, changes });
修复方法是:
useTable({ columns, data: changes });
这不是针对所提问题的确切解决方案,但可能对其他人有用。
Artur A
2021-08-19
我的是喊
TypeError: data.forEach is not a function accessRowsForColumn node_modules/react-table/dist/react-table.development.js:1453
我想创建一个只有一行的表 - 我将一个对象传递到数据中,但它需要是数组内的对象,所以我只是这样做了
<Table
columns={columns}
data={[myObject]}
/>
bstrihova
2022-01-20