Event Callbacks
All event callbacks receive enriched events with native DOM event, content/viewport coordinates, and modifier keys. Call event.preventDefault() to cancel default behavior.
Grid API
Event Log
Click cells or headers...
Sorting: none
Selection: none
#Code
<Grid
data={data}
columns={columns}
sorting={sorting}
onSortingChange={setSorting}
selection={selection}
onSelectionChange={setSelection}
onCellClick={(e) => {
/* e.cell.row, e.cell.col; e.preventDefault() to block */
}}
onCellDoubleClick={(e) => {
/* e.preventDefault() to block */
}}
onHeaderClick={(e) => {
/* e.colIndex */
}}
onKeyDown={(e) => {
/* e.key; e.preventDefault() to block */
}}
onCellMouseDown={(e) => {
/* e.shiftKey, e.cell */
}}
onCellMouseMove={(e) => {
/* e.viewportX, e.viewportY */
}}
onCellMouseUp={() => {
/* drag end */
}}
onScroll={(e) => {
/* e.deltaY, e.deltaX; e.preventDefault() to block */
}}
onCanvasEvent={(e) => {
/* e.type, e.hitTest */
}}
onBeforeSortChange={(next) => {
/* return false to block */
}}
onBeforeSelectionChange={(next) => {
/* return false to block */
}}
/>#Table API Code
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
state: { sorting },
onSortingChange: setSorting,
});
<Table
table={table}
width={560}
height={480}
sorting={sorting}
onSortingChange={setSorting}
selection={selection}
onSelectionChange={setSelection}
onCellClick={(e) => {
/* e.cell.row, e.cell.col */
}}
onCellDoubleClick={(e) => {
/* e.preventDefault() to block */
}}
onHeaderClick={(e) => {
/* e.colIndex */
}}
onKeyDown={(e) => {
/* e.key */
}}
onCellMouseDown={(e) => {
/* e.shiftKey, e.cell */
}}
onCellMouseMove={(e) => {
/* e.viewportX, e.viewportY */
}}
onCellMouseUp={() => {
/* drag end */
}}
onScroll={(e) => {
/* e.deltaY, e.deltaX */
}}
onCanvasEvent={(e) => {
/* e.type, e.hitTest */
}}
onBeforeSortChange={(next) => {
/* return false to block */
}}
onBeforeSelectionChange={(next) => {
/* return false to block */
}}
>
<Thead>
{table.getHeaderGroups().map((hg) => (
<Tr key={hg.id}>
{hg.headers.map((h) => (
<Th key={h.id} colSpan={h.colSpan}>
{h.isPlaceholder ? null : flexRender(h.column.columnDef.header, h.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>;