SuperAPI AI 工具集

tanstack-table-core-expanding

前端与建站

查看项目

更新于 10-16 07:44

技能介绍

本技能是 TanStack Table Core 中关于行展开(expanding)功能的说明模块,构建在 core、table-features 与 client-vs-server 之上。展开功能控制行树是否被纳入,而渲染器负责展开控件与详情面板。

用途 用于在无头(headless)表格中实现层级子行(subrows)或自定义详情面板的展开逻辑。展开状态由 rowExpandingFeature 管理,展开后的行模型由 expandedRowModel 提供。

主要能力与配置 在配置中使用 tableFeatures 注册 rowExpandingFeature 与 createExpandedRowModel(),并通过 getSubRows 提供子行访问器。插件可提供 getRowCanExpand 等选项,并通过 row.getIsExpanded() 读取展开状态。示例: import { createExpandedRowModel, rowExpandingFeature, tableFeatures, } from '@tanstack/table-core'

type Node = { id: string; children?: Node[] } export const features = tableFeatures({ rowExpandingFeature, expandedRowModel: createExpandedRowModel(), }) export const options = { getSubRows: (row: Node) => row.children }

核心使用方式 const detailOptions = { getRowCanExpand: () => true } const isDetailOpen = row.getIsExpanded() 当 isDetailOpen 为 true 时,额外渲染一行或面板以展示自定义详情界面。表格本身是无头的,不会自动渲染详情内容。

常见错误

  1. 遗漏子行访问器:嵌套对象结构不会被自动推断,必须显式提供 getSubRows。 错误:const options = { data: nestedRows } 正确:const options = { data: nestedRows, getSubRows: (row: Node) => row.children }
  2. 误以为展开状态会生成详情标记:表格无头,无法渲染自定义详情面板。 错误:row.toggleExpanded(true) 正确:if (row.getIsExpanded()) renderDetail(row.original)
  3. 误读分页位置:paginateExpandedRows 控制展开发生在分页之前还是之后,并不会让分页大小只统计叶子行。 错误:const options = { paginateExpandedRows: false }; const leafOnlyPages = true 正确:const options = { paginateExpandedRows: false }; const descendantsStayWithParent = true

API 探索 可查看 node_modules/@tanstack/table-core/dist/features/row-expanding/ 了解展开状态、行 API 及模型位置。

适用场景 适用于需要展示嵌套/层级数据、可展开子行或自定义详情面板的表格,且需要自行控制展开渲染界面的场景。

限制 该表格为无头实现,不提供展开控件与详情面板的默认渲染,需开发者自行实现。其他细节如收费、价格、平台等暂未提供。