跟着官方示例学习 @tanStack-table --- Row Selection

295 阅读1分钟

🌲系列一:跟着官方示例学习 @tanStack-table --- Basic

🌲系列二:跟着官方示例学习 @tanStack-table --- Header Groups

🌲系列三:跟着官方示例学习 @tanStack-table --- Column Filters

🌲系列四:跟着官方示例学习 @tanStack-table --- Column Ordering

🌲系列五:跟着官方示例学习 @tanStack-table --- Sticky Column Pinning

🌲系列六:跟着官方示例学习 @tanStack-table --- Column Sizing

🌲系列七:跟着官方示例学习 @tanStack-table --- Expanding

🌲系列八:跟着官方示例学习 @tanStack-table --- Pagination

🌲系列九:跟着官方示例学习 @tanStack-table --- Row Dnd

🌲系列十:跟着官方示例学习 @tanStack-table --- Row Pinning


在表格世界里,"选择困难症" 一向不是什么稀奇事。但别怕,@tanStack/react-table 就像一个可靠的老朋友,早早为你准备好了贴心的行选择功能,无论你要全选、单选、页选,它都能轻松应对!

🧠 行选择:背后的小魔术

通过开启 enableRowSelection,你便启动了整套行选择机制。可以选择性地开启每行的选择按钮,甚至自定义选择的条件,比如只让成年人(age > 18)能被选中,防止熊孩子乱点:

enableRowSelection: true
// 或者: enableRowSelection: row => row.original.age > 18

每一行和表头的复选框都可以通过 getToggleSelectedHandler() 来控制行为,我们用 IndeterminateCheckbox 组件来增强 UX——实现“部分选中”的视觉状态提示。

✅ 三个层级的“选中”逻辑

  • 全表选择:选择所有可选的行(跨页也行)

  • 当前页选择:仅勾选当前分页的行

  • 局部选择:只选你点中的那些

<table>
  <thead>
    {/* 全选 Checkbox */}
    <IndeterminateCheckbox
      checked={table.getIsAllRowsSelected()}
      indeterminate={table.getIsSomeRowsSelected()}
      onChange={table.getToggleAllRowsSelectedHandler()}
    />
  </thead>
  <tfoot>
    {/* 当前页全选 */}
    <IndeterminateCheckbox
      checked={table.getIsAllPageRowsSelected()}
      indeterminate={table.getIsSomePageRowsSelected()}
      onChange={table.getToggleAllPageRowsSelectedHandler()}
    />
  </tfoot>
</table>

可以通过

table.getState().rowSelection

来获取勾选的数据

Jun-15-2025 14-04-48.gif

官方代码地址🔗: @tanStack/react-table