Table 数据表格

使用原生表格结构呈现关系数据,并把排序、筛选和请求状态留给宿主。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

原生表格结构只呈现静态记录;排序方向、清空恢复和最终数据顺序完全由宿主本地状态控制。
数据集组件验收
记录数4 条
质量复核队列
组件库验收记录,共四条静态本地数据
任务
负责人
API 审计林夏82
示例验收周宁96
内容校对陈默74
发布检查宋安89
本地静态数据4 条
当前顺序:原始顺序
空结果对照
无匹配记录的本地筛选结果
任务
负责人
质量分
没有匹配记录
这是独立的本地空结果状态,不与加载行或真实数据混排。
标题、表头和数据单元格组成可被辅助技术识别的原生表格。
版本列表
最近发布版本
版本
状态
变更数
2.4.0稳定18
2.5.0-beta测试7
空结果和加载中使用不同结构,避免将未知数据误认为没有数据。
空结果
筛选结果
名称
负责人
没有匹配项
调整筛选条件后重试。
加载中
正在载入成员
名称
负责人
原生布局使用单一表格,分区滚动布局让表头与可滚动表体协同。
自动
原生布局
名称
说明
目录根据内容和可用宽度调整列。
固定
分区滚动布局
名称
说明
目录根据内容和可用宽度调整列。

使用建议

保持原生表格层级

Caption、Header、Body、Footer、Row、Head 与 Cell 应按 HTML table 结构嵌套;不要为了视觉布局把行列拆成无语义的 div。

排序完全由宿主持有

sortable、sortDirection 与 onSort 只建立表头交互合同;实际比较、升降序切换、清空恢复、服务端请求和 URL 同步都由宿主完成。

让数据、空态和加载态互斥

BaseTableEmpty 只在结果集合确实为空时替换数据行;BaseTableLoading 应在等待期间替换 Body 中的真实行,不能与数据行或 Empty 同时混排。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import {
  BaseTable,
  BaseTableBody,
  BaseTableCaption,
  BaseTableCell,
  BaseTableContainer,
  BaseTableEmpty,
  BaseTableFooter,
  BaseTableHead,
  BaseTableHeader,
  BaseTableLoading,
  BaseTableRow,
} from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • Table 不是数据网格引擎,不负责查询、筛选、排序算法、分页、选择模型、虚拟滚动或请求状态;这些都由宿主管理。
  • T17 尚缺 manual screen-reader、native-table selection guidance、RTL、narrow/mobile、long-content、deterministic visual 与最终 packed React 18/19 证据。
  • Manual screen-reader, native-table selection guidance, HTML drag-and-drop fallback, RTL, narrow/mobile, and long-content review remains pending.
  • Deterministic visual evidence and final T17/T23 packed React 18/19 and hydration checks remain pending.

API

export interface BaseTableProps
  extends Omit<TableHTMLAttributes<HTMLTableElement>, 'className' | 'style'>,
    BaseTableColumnInteractionOptions {
  layout?: BaseTableLayout;
  columns?: BaseTableColumnDefinition[];
  bodyMaxHeight?: number | string;
  bodyClassName?: string;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
layout表格采用自动列宽还是固定列布局。BaseTableLayout'native'
columns列定义或列数量;具体结构以当前组件的 Props 类型为准。BaseTableColumnDefinition[]
bodyMaxHeight表格主体滚动区域允许使用的最大高度。number | string
bodyClassName追加到表格主体滚动区域的 CSS 类名。string
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableBody

查看组件源码
export interface BaseTableBodyProps
  extends Omit<HTMLAttributes<HTMLTableSectionElement>, 'className' | 'style'> {
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableSectionClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableSectionClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableCaption

查看组件源码
export interface BaseTableCaptionProps
  extends Omit<HTMLAttributes<HTMLTableCaptionElement>, 'className' | 'style'> {
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableCaptionClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableCaptionClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableCell

查看组件源码
export interface BaseTableCellProps
  extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align' | 'className' | 'style'> {
  align?: BaseTableAlign;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableCellClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
align内容在对应轴线或单元格中的对齐方式。BaseTableAlign'left'
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableCellClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableContainer

查看组件源码
export interface BaseTableContainerProps
  extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {
  appearance?: BaseAppearance;
  attachedFooter?: boolean;
  className?: string;
  classNames?: BaseTableContainerClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
attachedFooter是否为贴合式底部栏预留边界与圆角关系。booleanfalse
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableContainerClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableEmpty

查看组件源码
export interface BaseTableEmptyProps
  extends Omit<HTMLAttributes<HTMLTableRowElement>, 'children' | 'className' | 'style' | 'title'> {
  colSpan: number;
  icon?: ReactNode;
  title?: ReactNode;
  description?: ReactNode;
  actions?: ReactNode;
  children?: ReactNode;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableEmptyClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
colSpan必填空状态单元格横跨的表格列数。number
icon显示在主要内容旁的图标。ReactNode
title表格空状态显示的主标题。ReactNode
description用于补充标题或标签含义的说明内容。ReactNode
actions在主要内容旁呈现的一组操作。ReactNode
children在 BaseTableEmpty 内渲染的子内容;支持渲染函数时以对应的 Props 类型为准。ReactNode
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableEmptyClassNames
style追加到组件根元素的内联样式。CSSProperties
查看组件源码
export interface BaseTableFooterProps
  extends Omit<HTMLAttributes<HTMLTableSectionElement>, 'className' | 'style'> {
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableSectionClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableSectionClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableHead

查看组件源码
export interface BaseTableHeadProps
  extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'className' | 'style'> {
  columnId?: string;
  align?: BaseTableAlign;
  verticalAlign?: BaseTableVerticalAlign;
  icon?: ReactNode;
  label?: ReactNode;
  description?: ReactNode;
  meta?: ReactNode;
  actions?: ReactNode;
  trailing?: ReactNode;
  sortable?: boolean;
  sortDirection?: BaseTableSortDirection;
  sortLabel?: string;
  onSort?: (columnId?: string) => void;
  draggable?: boolean;
  dragLabel?: string;
  resizable?: boolean;
  resizeLabel?: string;
  width?: number | string;
  minWidth?: number;
  maxWidth?: number;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableHeadClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
columnId用于排序、拖拽和尺寸变更的稳定列标识。string
align内容在对应轴线或单元格中的对齐方式。BaseTableAlign
verticalAlign表头内容在单元格内的垂直对齐方式。BaseTableVerticalAlign
icon显示在主要内容旁的图标。ReactNode
label表头显示的列名称。ReactNode
description用于补充标题或标签含义的说明内容。ReactNode
meta显示在表头标签旁的补充信息。ReactNode
actions在主要内容旁呈现的一组操作。ReactNode
trailing显示在主要内容末尾的附加内容。ReactNode
sortable当前表头是否提供排序交互。boolean
sortDirection当前列已应用的排序方向。BaseTableSortDirection'none'
sortLabel排序按钮的可访问名称。string
onSort用户请求按当前列排序时调用的回调。(columnId?: string) => void
draggable是否允许通过拖动调整列顺序。boolean
dragLabel列拖动控件的可访问名称。string
resizable是否允许用户调整对应区域的尺寸。boolean
resizeLabel提供给尺寸调整控件的可访问名称。string
width表格列使用的明确宽度。number | string
minWidth表格列允许使用的最小宽度。number
maxWidth组件或内容区域允许使用的最大宽度。number
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableHeadClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableHeader

查看组件源码
export interface BaseTableHeaderProps
  extends Omit<HTMLAttributes<HTMLTableSectionElement>, 'className' | 'style'> {
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableSectionClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableSectionClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableLoading

查看组件源码
export interface BaseTableLoadingProps {
  rows?: number;
  columns: number;
  columnWidths?: Array<number | string | undefined>;
  animated?: boolean;
  rowLabel?: string;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableLoadingClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
rows加载状态中生成的骨架行数。number3
columns必填列定义或列数量;具体结构以当前组件的 Props 类型为准。number
columnWidths加载骨架各列使用的宽度列表。Array<number | string | undefined>[]
animated是否播放加载或状态变化动画。booleantrue
rowLabel加载骨架行的可访问名称。string
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableLoadingClassNames
style追加到组件根元素的内联样式。CSSProperties

BaseTableRow

查看组件源码
export interface BaseTableRowProps
  extends Omit<HTMLAttributes<HTMLTableRowElement>, 'className' | 'style'> {
  interactive?: boolean;
  selected?: boolean;
  disabled?: boolean;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BaseTableRowClassNames;
  style?: CSSProperties;
}
属性说明类型默认值
interactive表格行是否使用可点击、可聚焦的交互样式。boolean
selected表格行是否以已选中状态呈现。boolean
disabled是否禁用该组件及其可交互行为。boolean
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BaseTableRowClassNames
style追加到组件根元素的内联样式。CSSProperties