Shadcn React Table

Search documentation

Search the docs

Event listeners

The data table exposes click handlers for rows and cells so you can react to user interaction.

Event listeners
GitHub
Click any row
ID
AvaThompsonOwnerEngineeringactive22$45,000Jan 2, 2023
0%
LiamNguyenAdminMarketinginactive25$47,137Jan 13, 2023
9%
NoahSilvaEditorDesignpending28$49,274Jan 24, 2023
18%
EmmaCarterViewerSalesactive31$51,411Feb 4, 2023
27%
OliviaRossiOwnerSupportinactive34$53,548Feb 15, 2023
36%
WilliamWalkerAdminEngineeringpending37$55,685Feb 26, 2023
45%
SophiaPatelEditorMarketingactive40$57,822Mar 9, 2023
54%
JamesMullerViewerDesigninactive43$59,959Mar 20, 2023
63%
IsabellaParkOwnerSalespending46$62,096Mar 31, 2023
72%
LucasReyesAdminSupportactive49$64,233Apr 11, 2023
81%
$4,120,536
Rows per page
1–10 of 48

Row handlers (onRowClick, onRowDoubleClick) receive { row, table, event }. Cell handlers (onCellClick, onCellDoubleClick) receive { cell, row, table, event }.

import { useState } from "react"
import { DataTable, useDataTable } from "@/components/ui/data-table"

const [lastClickedId, setLastClickedId] = useState<string | null>(null)

const table = useDataTable({
  data,
  columns,
  getRowId: (row) => row.id,
  onRowClick: ({ row }) => {
    setLastClickedId(row.id)
  },
})

return <DataTable table={table} />

Access the full context

Because each handler receives the table instance and the original event, you can read selection state, call other table APIs, or stop propagation directly inside your handler.