为什么在使用 react-table 时使用 `useTable` 而不是 `ReactTable`

Why use `useTable` over `ReactTable` when using react-table

在他们的 npm page 上,示例显示了 <ReactTable> 组件的用法:

import ReactTable from 'react-table'
...
render() {
  return (
    <ReactTable
      data={data}
      columns={columns}
    />
  )
}

但是,在他们的 API Docs and examples 上,他们都使用 useTable

import { useTable } from 'react-table';

function Table({ columns, data }) {
  // Use the state and functions returned from useTable to build your UI
  const {
    getTableProps,
    getTableBodyProps,
    headerGroups,
    rows,
    prepareRow,
  } = useTable({
    columns,
    data,
  })

  // Render the UI for your table
  return (
    <table {...getTableProps()}>
      <thead>
        {headerGroups.map(headerGroup => (
          <tr {...headerGroup.getHeaderGroupProps()}>
            {headerGroup.headers.map(column => (
              <th {...column.getHeaderProps()}>{column.render('Header')}</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>
  )
}

...

render () {
  return (
    <Table columns={columns} data={data} />
  )
}

所以,我的问题是:为什么有人会在 he/she 可以只使用一个已经提供的。 我很确定他们没有忘记更新他们的 npm 页面的示例……或者他们忘记了吗?

react-table is a "headless" UI 库,这意味着它仅提供后端 table 功能,并且需要您自己实现 table 的渲染反应组件。

这意味着您可以将后端 table 代码应用到任何您想要的 table 样式(例如 Bootstrap、Material UI, vanilla HTML 等),并且您会得到精确的控制将此库连接到 UI.

的位置

大多数 table 库(包括 react-table v7 之前的版本!)具有预定义的功能和行为,在某些情况下可能不适合您table;但是,当使用 react-table >=v7 时,您可以通过实现自己的 UI 代码然后将其连接到您的 react-table 钩子代码来满足这些情况。