@@ -26,9 +26,9 @@ npm uninstall react-table @types/react-table
26
26
npm install @tanstack/react-table
27
27
```
28
28
29
- ``` diff
30
- - import { useTable } from 'react-table'
31
- + import { useReactTable } from '@tanstack/react-table'
29
+ ``` tsx
30
+ - import { useTable } from ' react-table' // [!code --]
31
+ + import { useReactTable } from ' @tanstack/react-table' // [!code ++]
32
32
` ` `
33
33
34
34
Types are now included in the base package, so you can remove the ` @types / react - table ` package.
@@ -40,31 +40,31 @@ Types are now included in the base package, so you can remove the `@types/react-
40
40
- Rename ` useTable ` to ` useReactTable `
41
41
- The old hook and plugin systems have been removed, but they have replaced with tree-shakable row model imports for each feature.
42
42
43
- ``` diff
44
- - import { useTable, usePagination, useSortBy } from 'react-table';
45
- + import {
46
- + useReactTable,
47
- + getCoreRowModel,
48
- + getPaginationRowModel,
49
- + getSortedRowModel
50
- + } from '@tanstack/react-table';
43
+ ` ` ` tsx
44
+ - import { useTable , usePagination , useSortBy } from ' react-table' ; // [!code --]
45
+ + import { // [!code ++]
46
+ + useReactTable , // [!code ++]
47
+ + getCoreRowModel , // [!code ++]
48
+ + getPaginationRowModel , // [!code ++]
49
+ + getSortedRowModel // [!code ++]
50
+ + } from ' @tanstack/react-table' ; // [!code ++]
51
51
52
52
// ...
53
53
54
- - const tableInstance = useTable(
55
- - { columns, data },
56
- - useSortBy,
57
- - usePagination, //order of hooks used to matter
58
- - // etc.
59
- - );
60
- + const tableInstance = useReactTable({
61
- + columns,
62
- + data,
63
- + getCoreRowModel: getCoreRowModel(),
64
- + getPaginationRowModel: getPaginationRowModel(),
65
- + getSortedRowModel: getSortedRowModel(), //order doesn't matter anymore!
66
- + // etc.
67
- + });
54
+ - const tableInstance = useTable ( // [!code --]
55
+ - { columns , data }, // [!code --]
56
+ - useSortBy , // [!code --]
57
+ - usePagination , // order of hooks used to matter // [!code --]
58
+ - // etc. // [!code --]
59
+ - ); // [!code --]
60
+ + const tableInstance = useReactTable ({ // [!code ++]
61
+ + columns , // [!code ++]
62
+ + data , // [!code ++]
63
+ + getCoreRowModel: getCoreRowModel (), // [!code ++]
64
+ + getPaginationRowModel: getPaginationRowModel (), // [!code ++]
65
+ + getSortedRowModel: getSortedRowModel (), // order doesn't matter anymore! // [!code ++]
66
+ + // etc. // [!code ++]
67
+ + }); // [!code ++]
68
68
```
69
69
70
70
- All ` disable* ` table options were renamed to ` enable* ` table options. (e.g. ` disableSortBy ` is now ` enableSorting ` , ` disableGroupBy ` is now ` enableGrouping ` , etc.)
@@ -78,34 +78,34 @@ Types are now included in the base package, so you can remove the `@types/react-
78
78
- The first parameter is the accessor function or accessor string.
79
79
- The second parameter is an object of column options.
80
80
81
- ``` diff
81
+ ``` tsx
82
82
const columns = [
83
- - {
84
- - accessor: 'firstName',
85
- - Header: 'First Name',
86
- - },
87
- - {
88
- - accessor: row => row.lastName,
89
- - Header: () => <span>Last Name</span>,
90
- - },
83
+ - { // [!code --]
84
+ - accessor: ' firstName' , // [!code --]
85
+ - Header: ' First Name' , // [!code --]
86
+ - }, // [!code --]
87
+ - { // [!code --]
88
+ - accessor : row => row .lastName , // [!code --]
89
+ - Header : () => <span >Last Name</span >, // [!code --]
90
+ - }, // [!code --]
91
91
92
92
// Best TypeScript experience, especially when using `cell.getValue()` later on
93
- + columnHelper.accessor('firstName', { //accessorKey
94
- + header: 'First Name',
95
- + }),
96
- + columnHelper.accessor(row => row.lastName, { //accessorFn
97
- + header: () => <span>Last Name</span>,
98
- + }),
93
+ + columnHelper .accessor (' firstName' , { // accessorKey // [!code ++]
94
+ + header: ' First Name' , // [!code ++]
95
+ + }), // [!code ++]
96
+ + columnHelper .accessor (row => row .lastName , { // accessorFn // [!code ++]
97
+ + header : () => <span >Last Name</span >, // [!code ++]
98
+ + }), // [!code ++]
99
99
100
100
// OR (if you prefer)
101
- + {
102
- + accessorKey: 'firstName',
103
- + header: 'First Name',
104
- + },
105
- + {
106
- + accessorFn: row => row.lastName,
107
- + header: () => <span>Last Name</span>,
108
- + },
101
+ + { // [!code ++]
102
+ + accessorKey: ' firstName' , // [!code ++]
103
+ + header: ' First Name' , // [!code ++]
104
+ + }, // [!code ++]
105
+ + { // [!code ++]
106
+ + accessorFn : row => row .lastName , // [!code ++]
107
+ + header : () => <span >Last Name</span >, // [!code ++]
108
+ + }, // [!code ++]
109
109
]
110
110
```
111
111
@@ -136,58 +136,58 @@ const columns = [
136
136
- You will need to define the ` key ` props manually
137
137
- You will need to define the ` colSpan ` prop manually if using features that require it (grouped headers, aggregation, etc.)
138
138
139
- ``` diff
140
- - <th {...header.getHeaderProps()}>{cell.render('Header')}</th>
141
- + <th colSpan={header.colSpan} key={column.id}>
142
- + {flexRender(
143
- + header.column.columnDef.header,
144
- + header.getContext()
145
- + )}
146
- + </th>
139
+ ``` tsx
140
+ - < th {... header .getHeaderProps ()}> {cell.render(' Header' )}</th> // [!code --]
141
+ + <th colSpan={header.colSpan} key={column.id}> // [!code ++]
142
+ + {flexRender( // [!code ++]
143
+ + header.column.columnDef.header, // [!code ++]
144
+ + header.getContext() // [!code ++]
145
+ + )} // [!code ++]
146
+ + </th> // [!code ++]
147
147
` ` `
148
148
149
- ``` diff
150
- - <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
151
- + <td key={cell.id}>
152
- + {flexRender(
153
- + cell.column.columnDef.cell,
154
- + cell.getContext()
155
- + )}
156
- + </td>
149
+ ` ` ` tsx
150
+ - <td {...cell.getCellProps()}>{cell.render(' Cell' )}</td> // [!code --]
151
+ + <td key={cell.id}> // [!code ++]
152
+ + {flexRender( // [!code ++]
153
+ + cell.column.columnDef.cell, // [!code ++]
154
+ + cell.getContext() // [!code ++]
155
+ + )} // [!code ++]
156
+ + </td> // [!code ++]
157
157
` ` `
158
158
159
- ``` diff
159
+ ` ` ` tsx
160
160
// in column definitions in this case
161
- - Header: ({ getToggleAllRowsSelectedProps }) => (
162
- - <input type="checkbox" {...getToggleAllRowsSelectedProps()} />
163
- - ),
164
- - Cell: ({ row }) => (
165
- - <input type="checkbox" {...row.getToggleRowSelectedProps()} />
166
- - ),
167
- + header: ({ table }) => (
168
- + <Checkbox
169
- + checked={table.getIsAllRowsSelected()}
170
- + indeterminate={table.getIsSomeRowsSelected()}
171
- + onChange={table.getToggleAllRowsSelectedHandler()}
172
- + />
173
- + ),
174
- + cell: ({ row }) => (
175
- + <Checkbox
176
- + checked={row.getIsSelected()}
177
- + disabled={!row.getCanSelect()}
178
- + indeterminate={row.getIsSomeSelected()}
179
- + onChange={row.getToggleSelectedHandler()}
180
- + />
181
- + ),
161
+ - Header: ({ getToggleAllRowsSelectedProps }) => ( // [!code --]
162
+ - < input type = " checkbox" {... getToggleAllRowsSelectedProps ()} / > // [!code --]
163
+ - ), // [!code --]
164
+ - Cell : ({ row }) => ( // [!code --]
165
+ - < input type = " checkbox" {... row .getToggleRowSelectedProps ()} / > // [!code --]
166
+ - ), // [!code --]
167
+ + header : ({ table }) => ( // [!code ++]
168
+ + < Checkbox // [!code ++]
169
+ + checked = {table.getIsAllRowsSelected()} // [!code ++]
170
+ + indeterminate = {table.getIsSomeRowsSelected()} // [!code ++]
171
+ + onChange = {table.getToggleAllRowsSelectedHandler()} // [!code ++]
172
+ + / > // [!code ++]
173
+ + ), // [!code ++]
174
+ + cell : ({ row }) => ( // [!code ++]
175
+ + < Checkbox // [!code ++]
176
+ + checked = {row.getIsSelected()} // [!code ++]
177
+ + disabled = {!row.getCanSelect()} // [!code ++]
178
+ + indeterminate = {row.getIsSomeSelected()} // [!code ++]
179
+ + onChange = {row.getToggleSelectedHandler()} // [!code ++]
180
+ + / > // [!code ++]
181
+ + ), // [!code ++]
182
182
` ` `
183
183
184
184
### Other Changes
185
185
186
186
- custom ` filterTypes ` (now called ` filterFns ` ) have a new function signature as it only returns a boolean for whether the row should be included or not.
187
187
188
- ``` diff
189
- - (rows: Row[], id: string, filterValue: any) => Row[]
190
- + (row: Row, id: string, filterValue: any) => boolean
188
+ ` ` ` tsx
189
+ - (rows: Row [], id: string , filterValue: any ) => Row [] // [!code --]
190
+ + (row : Row , id : string , filterValue : any ) => boolean // [!code ++]
191
191
` ` `
192
192
193
193
- ...
0 commit comments