Props
VantTable 组件支持以下属性配置:
基础属性
headers
- 类型:
TableHeader[]
- 默认值:
[]
- 说明: 表头配置数组
typescript
interface TableHeader {
key: string // 列键值
label: string // 列标题
width?: number // 列宽度
fixed?: 'left' | 'right' // 固定列位置
sortable?: boolean // 是否可排序
filterable?: boolean // 是否可过滤
align?: 'left' | 'center' | 'right' // 对齐方式
type?: 'text' | 'number' | 'currency' | 'percent' // 数据类型
renderCell?: (value, row, column, rowIndex, colIndex, h) => any // 自定义渲染
}
data
- 类型:
any[]
- 默认值:
[]
- 说明: 表格数据数组
尺寸属性
width
- 类型:
number | string
- 默认值:
'100%'
- 说明: 表格宽度
height
- 类型:
number | string
- 默认值:
400
- 说明: 表格高度
min-width
- 类型:
number
- 默认值:
800
- 说明: 表格最小宽度
选择功能
selectable
- 类型:
boolean
- 默认值:
false
- 说明: 是否启用选择功能
select-mode
- 类型:
'checkbox' | 'radio'
- 默认值:
'checkbox'
- 说明: 选择模式
select-on-row-click
- 类型:
boolean
- 默认值:
false
- 说明: 点击行是否触发选择
preserve-selection
- 类型:
boolean
- 默认值:
false
- 说明: 是否保持选择状态
selectable-filter
- 类型:
(row: any, index: number) => boolean
- 默认值:
null
- 说明: 选择过滤函数
javascript
// 示例:只允许在职员工被选择
const selectableFilter = (row, index) => {
return row.status === '在职'
}
max-select-count
- 类型:
number
- 默认值:
0
- 说明: 最大选择数量,0 表示不限制
row-key
- 类型:
string | function
- 默认值:
'id'
- 说明: 行唯一标识
selected-keys
- 类型:
string[]
- 默认值:
[]
- 说明: 选中行键值 (v-model)
扩展功能
expandable
- 类型:
boolean
- 默认值:
false
- 说明: 是否支持展开行
状态属性
loading
- 类型:
boolean
- 默认值:
false
- 说明: 加载状态
striped
- 类型:
boolean
- 默认值:
false
- 说明: 是否显示斑马纹
bordered
- 类型:
boolean
- 默认值:
true
- 说明: 是否显示边框
加载更多
enable-load-more
- 类型:
boolean
- 默认值:
false
- 说明: 是否启用加载更多功能
load-more-loading
- 类型:
boolean
- 默认值:
false
- 说明: 加载更多状态
load-more-finished
- 类型:
boolean
- 默认值:
false
- 说明: 是否加载完成
load-more-error
- 类型:
boolean
- 默认值:
false
- 说明: 是否加载错误
load-more-offset
- 类型:
number
- 默认值:
50
- 说明: 触发加载更多的滚动偏移量
show-load-more-ui
- 类型:
boolean
- 默认值:
true
- 说明: 是否显示加载更多 UI
load-more-loading-text
- 类型:
string
- 默认值:
'加载中...'
- 说明: 加载中提示文本
load-more-finished-text
- 类型:
string
- 默认值:
'没有更多了'
- 说明: 加载完成提示文本
load-more-error-text
- 类型:
string
- 默认值:
'加载失败,点击重试'
- 说明: 加载失败提示文本
使用示例
vue
<template>
<VantTable
:headers="headers"
:data="data"
:width="'100%'"
:height="500"
:min-width="1000"
:selectable="true"
select-mode="checkbox"
:select-on-row-click="true"
:preserve-selection="true"
:selectable-filter="selectableFilter"
:max-select-count="10"
row-key="id"
v-model:selected-keys="selectedKeys"
:expandable="true"
:loading="loading"
:striped="true"
:bordered="true"
:enable-load-more="true"
:load-more-loading="loadMoreLoading"
:load-more-finished="loadMoreFinished"
:load-more-error="loadMoreError"
:load-more-offset="100"
:show-load-more-ui="true"
load-more-loading-text="正在加载更多..."
load-more-finished-text="已经到底了~"
load-more-error-text="加载失败,点击重试"
/>
</template>