反应表排序不适用于计算列

时间:2021-01-08 07:07:49

标签: javascript reactjs react-table

我的“计算”列标题:'EV/Resource ($ per oz)' 当在反应表中按下时排序似乎没有按任何升序或降序排序,它随机化表以某种方式排序。我是否正确地进行了“计算列”?我所有的其他列都正确排序。

  {
    Header: 'in-situ ($b)',
    accessor: 'minerals_value',
    Cell: (row) => {
      return (row.value / 100 / 1000000000).toFixed(2)
    },
  },
  {
    Header: 'GMV ($/t)',
    accessor: 'minerals_value_per_ton',
  },
  {
    Header: 'EV/Resource ($ per oz)',
    id: 'evresource',
    accessor: 'evresource',
    sortType: 'basic',

    Cell: (row) => {
      return Number(
        row.row.original.company.enterprise_value /
          100 /
          row.row.original.primary_mineral.contained
      ).toFixed()
    },
  },

表格渲染:

<table {...getTableProps()}>
      <thead>
        {headerGroups.map((headerGroup) => (
          <tr {...headerGroup.getHeaderGroupProps()}>
            {headerGroup.headers.map((column) => (
              <th {...column.getHeaderProps(column.getSortByToggleProps())}>
                {column.render('Header')}
                <span>{column.isSorted ? (column.isSortedDesc ? ' ▼' : ' ▲') : ''}</span>
              </th>
            ))}
          </tr>
        ))}
      </thead>
      <tbody {...getTableBodyProps()}>
        {rows.map((row, i) => {
          prepareRow(row)
          return (
            <tr {...row.getRowProps()}>
              {row.cells.map((cell) => {
                return <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
              })}
            </tr>
          )
        })}
      </tbody>
    </table>

1 个答案:

答案 0 :(得分:0)

您需要实现自定义访问器才能正常进行排序。 具体:

  {
    Header: 'EV/Resource ($ per oz)',
    id: 'evresource',
    accessor: customAccessor,

function customAccessor(row) {
  return Number(
        row.company.enterprise_value /
          100 /
          row.primary_mineral.contained
      )
  }
}
相关问题