组件/DataTable 数据表格
自 1.0.0BETA

DataTable 数据表格

轻量数据表格组件,提供排序、行选择与自定义渲染能力

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

DataTable 数据表格

轻量数据表格组件,提供排序、行选择与自定义渲染能力。

基础用法

示例即将加载...
<script setup lang="ts">
const columns = [
  { key: 'name', title: 'Name' },
  { key: 'role', title: 'Role' },
  { key: 'score', title: 'Score', sortable: true },
]

const data = [
  { id: 1, name: 'Ava', role: 'Designer', score: 92 },
  { id: 2, name: 'Noah', role: 'Engineer', score: 88 },
  { id: 3, name: 'Mia', role: 'PM', score: 95 },
]
</script>

<template>
  <TxDataTable :columns="columns" :data="data" striped bordered />
</template>

行选择

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const selectedKeys = ref([])
</script>

<template>
  <TxDataTable
    v-model:selected-keys="selectedKeys"
    :columns="columns"
    :data="data"
    row-key="id"
    selectable
  />
</template>

排序交互

可排序表头会暴露 aria-sort 状态,并支持鼠标点击、Enter 与 Space 在升序、降序、未排序之间切换。sortOnClient=false 时仍会触发 sortChange,但不会重排本地数据。

API

TxDataTable Props

属性名类型默认值说明
columnsDataTableColumn[][]列配置
dataany[][]数据源
rowKeystring | (row, index) => string | numberindex行唯一标识
loadingbooleanfalse加载状态
emptyTextstring'No data'空数据提示
stripedbooleanfalse斑马纹
borderedbooleanfalse表格边框
hoverbooleantrue悬浮高亮
selectablebooleanfalse是否可选择
selectedKeysArray<string | number>[]选中 key 列表
defaultSort{ key: string; order: 'asc' | 'desc' | null }null默认排序
sortOnClientbooleantrue是否前端排序

DataTableColumn

字段类型说明
keystring列 key
titlestring表头文本
dataIndexstring数据字段名
widthstring | number列宽
align'left' | 'center' | 'right'对齐方式
sortableboolean是否可排序
sorter(a, b) => number自定义排序器
format(value, row, index) => string默认文本格式化
headerClassstring表头 class
cellClassstring单元格 class

Events

事件名参数说明
update:selectedKeys(keys)选中变化
selectionChange(keys)选中变化
sortChange(sort)排序变化
rowClick({ row, index })行点击

Slots

名称说明
header-<columnKey>自定义表头
cell-<columnKey>自定义单元格
empty空状态