π React Table (TanStack Table): ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ
ΠΡΠΈΠ²Π΅Ρ, Π΄ΡΡΠ·ΡΡ!
π ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ Π² React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Π°ΠΌ ΡΠΎΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°
React Table (Π½ΡΠ½Π΅
TanStack Table). ΠΡΠΎ Π³ΠΈΠ±ΠΊΠ°Ρ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
πΉ ΠΠΎΡΠ΅ΠΌΡ TanStack Table?
-
ΠΠ΅Π³ΠΊΠΎΡΡΡ: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ Π½Π°Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ.
-
ΠΠΈΠ±ΠΊΠΎΡΡΡ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ, ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ, ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ.
-
ΠΡΡΠΎΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠ°Π±Π»ΠΈΡ.
-
Π Π°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ: ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
πΉ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ:
npm install @tanstack/react-table
πΉ ΠΡΠΈΠΌΠ΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
import React, { useState } from "react";
import {
createColumnHelper,
flexRender,
getCoreRowModel,
useReactTable,
} from '@tanstack/react-table'
const defaultData = [
{
firstName: 'tanner',
lastName: 'linsley',
age: 24,
visits: 100,
status: 'In Relationship',
progress: 50,
},
{
firstName: 'tandy',
lastName: 'miller',
age: 40,
visits: 40,
status: 'Single',
progress: 80,
},
{
firstName: 'joe',
lastName: 'dirte',
age: 45,
visits: 20,
status: 'Complicated',
progress: 10,
},
]
const columnHelper = createColumnHelper()
const columns = [
columnHelper.accessor('firstName', {
cell: info => info.getValue(),
}),
columnHelper.accessor(row => row.lastName, {
id: 'lastName',
cell: info => <i>{info.getValue()}</i>,
header: () => <span>Last Name</span>,
}),
columnHelper.accessor('age', {
header: () => 'Age',
cell: info => info.renderValue(),
}),
columnHelper.accessor('visits', {
header: () => <span>Visits</span>,
}),
columnHelper.accessor('status', {
header: 'Status',
}),
columnHelper.accessor('progress', {
header: 'Profile Progress',
}),
]
function App() {
const [data, _setData] = useState(() => [...defaultData])
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
})
return (
<div>
<table>
<thead>
{table.getHeaderGroups().map(headerGroup => (
<tr key={headerGroup.id}>
{headerGroup.headers.map(header => (
<th key={header.id}>
{header.isPlaceholder
? null
: flexRender(
header.column.columnDef.header,
header.getContext()
)}
</th>
))}
</tr>
))}
</thead>
<tbody>
{table.getRowModel().rows.map(row => (
<tr key={row.id}>
{row.getVisibleCells().map(cell => (
<td key={cell.id}>
{flexRender(cell.column.columnDef.cell, cell.getContext())}
</td>
))}
</tr>
))}
</tbody>
</table>
</div>
)
}
export default App;
πΉ ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
1.
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ·
ΠΊΠΎΡΠΎΠ±ΠΊΠΈ
2.
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ
React Table ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ, Π²ΡΠ±ΠΎΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
3.
ΠΠ°Π³ΠΈΠ½Π°ΡΠΈΡ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ.
4.
ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ»Ρ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΠ°Π±Π»ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
π― ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
TanStack Table β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π±Π»ΠΈΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ, ΠΎΡ ΠΏΡΠΎΡΡΡΡ
ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ
Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ, ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ.
ReactJs Daily | #begginers