开发者问题收集

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