3

我在使用 .react-table 时遇到了一些问题useSortBy。没有useSortBy桌子工作正常。收到此错误:

错误:超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。React 限制了嵌套更新的数量以防止无限循环。

var COLUMNS = [
    {
        Header: 'Data Criação',
        accessor: 'createdAt',
        Cell: ({value})=> {return value ? format(new Date(value),  'dd/MM/yyyy') : ''},
    },
    {
        Header: 'Nome',
        accessor: 'name'
    },
    {
        Header: 'Telefone',
        accessor: 'mobile'
    },
    {
        Header: 'Email',
        accessor: 'email'
    },
    {
        Header: 'Action',
        accessor: (hit)=>{
            return <LeadTableAction item={hit} selection={handleLeadDataSelection}/>
        }
    }
]

const columns = useMemo(()=>COLUMNS, []);

const tableInst = useTable({
    columns,
    data:props.lead.leadData ? props.lead.leadData : [{}]
}, useSortBy);

const {
    getTableProps,
    getTableBodyProps,
    headerGroups,
    rows,
    prepareRow
} = tableInst;

在 JSX 上:

<Table {...getTableProps()}>
    <thead>
        {headerGroups.map(hg=>{
           return (
               <tr {...hg.getHeaderGroupProps()}>
                   {hg.headers.map(h=>{
                   return (
                           <th {...h.getHeaderProps(h.getSortByToggleProps())}>
                              {h.render("Header")}
                                <span style={{marginLeft: '5px'}}>
                              {h.isSorted ? (h.isSortedDesc ? <i className="fas fa-sort-down"></i> : <i className="fas fa-sort-up"></i>) : ''}
                              </span>
                           </th>
                           )
                    })}
              </tr>
              )
         })}
  </thead>
  <tbody {...getTableBodyProps()}>
     {rows.map(row=>{
        prepareRow(row)
        return(
           <tr {...row.getRowProps()}>
               {row.cells.map(cell=>{
               return(
                 <td {...cell.getCellProps()}>
                     {cell.render('Cell')}
                 </td>
                     )
               })}
          </tr>
          )
     })}
  </tbody>

有人可以帮忙吗?

4

2 回答 2

1

问题解决了,

我只是在我的代码中添加了一个备忘录:

const data = useMemo(()=>{
    return props.lead.leadData ? props.lead.leadData : [{}]
}, [props.lead.leadData]);

这个 props.lead 是直接在表上获取的数据。完毕!:)

于 2021-03-31T01:58:52.493 回答
0

在我尝试传递一个空的依赖数组的整个过程中,我的代码没有在那里抛出任何错误。它仅在我使用钩子的地方向我显示错误。useMemo我在数组的依赖挂钩中传递了数据,它工作了。

const data = useMemo(() => (employees.data), [employees.data]);
于 2021-11-08T20:36:41.447 回答