如何在react-table中添加可排序的索引列

bit*_*der 1 reactjs react-table

因此,我想使用react-table创建一个可排序的列,该列为每行编号(根据其在数据集中的位置)。

根据文档,排序是通过对accessor值进行比较的排序功能完成的。但是,与accessor选项不同,该选项不会公开索引Cell

因此,这将不起作用:

const columns = [
  {
    Header: '#',
    id: 'index',
    accessor: (row) => row.index // 'index' is undefined
  },
  /* ... */
]
Run Code Online (Sandbox Code Playgroud)

我当前的解决方法是将索引直接注入数据集中,如下所示:

myIndexedData = myData.map((el,index) => ({index, ...el})) //immutable

return (
  <ReactTable
    data={myIndexedData}
    columns={columns}
  />
);
Run Code Online (Sandbox Code Playgroud)

这并不是真正的最佳解决方案,尤其是对于大型数据集。有没有我看不到的更好的方法?

小智 9

您可以使用第二个参数作为索引。

{
      Header: '#',
      id: 'index',
      accessor: (_row: any, i : number) => i + 1 
}
Run Code Online (Sandbox Code Playgroud)


小智 5

{
    Header: "",
    id: "row",
    maxWidth: 50,
    filterable: false,
    Cell: (row) => {
        return <div>{row.index}</div>;
    }
},
Run Code Online (Sandbox Code Playgroud)


小智 5

{
    Header: "Index",
    accessor: "",
    Cell: (row) => {
        return <div>{row.row.id + 1}</div>;
    },
    disableSortBy: true,
    disableFilters: true,
},
Run Code Online (Sandbox Code Playgroud)

ver."react-table": "^7.6.3",