为什么在使用 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 钩子代码来满足这些情况。
在他们的 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 钩子代码来满足这些情况。