当前位置: 首页 > news >正文

Vue 3 和 Ant Design 版本3.2.20 Table解析

Vue 3 与 Ant Design Vue (3.2.20) Table 组件解析

Ant Design Vue 的 Table 组件是一个功能强大的数据表格组件,适用于 Vue 3 项目。下面我将详细介绍其核心功能和用法。

基本用法

<template><a-table :columns="columns" :dataSource="data" rowKey="id"/>
</template><script setup>
import { ref } from 'vue';const columns = ref([{title: '姓名',dataIndex: 'name',key: 'name',},{title: '年龄',dataIndex: 'age',key: 'age',},{title: '地址',dataIndex: 'address',key: 'address',},
]);const data = ref([{id: '1',name: '张三',age: 32,address: '西湖区湖底公园1号',},{id: '2',name: '李四',age: 42,address: '西湖区湖底公园2号',},
]);
</script>

核心特性

1. 列配置 (columns)

列配置是 Table 的核心,支持多种配置选项:

const columns = ref([{title: '姓名',          // 列标题dataIndex: 'name',     // 数据字段名key: 'name',           // React需要的keywidth: 150,            // 列宽度fixed: 'left',         // 固定列align: 'center',       // 对齐方式ellipsis: true,        // 超出省略customRender: ({ text, record, index }) => {  // 自定义渲染return `${text}(${record.age})`;},sorter: (a, b) => a.age - b.age,  // 排序函数filters: [             // 筛选配置{ text: '张三', value: '张三' },{ text: '李四', value: '李四' },],onFilter: (value, record) => record.name.includes(value),},// 更多列...
]);

2. 分页配置

<a-table:pagination="{current: currentPage,pageSize: pageSize,total: total,showSizeChanger: true,showQuickJumper: true,showTotal: total => `共 ${total} 条`,onChange: handlePageChange,onShowSizeChange: handleSizeChange,}"
/>

3. 选择功能

<a-tablerowSelection={{type: 'checkbox', // 或 'radio'selectedRowKeys: selectedKeys,onChange: (selectedRowKeys, selectedRows) => {// 处理选择变化},getCheckboxProps: record => ({disabled: record.disabled, // 配置不可选的项}),}}
/>

4. 排序和筛选

<a-table:columns="columns":dataSource="data"@change="handleTableChange"  // 排序、筛选、分页变化时触发
/>

5. 可展开行

<a-table:expandable="{expandedRowRender: record => `<p>${record.description}</p>`,rowExpandable: record => record.name !== '不可展开',expandRowByClick: true,}"
/>

6. 自定义样式

<a-table:rowClassName="(record, index) => index % 2 === 0 ? 'even-row' : 'odd-row'":customRow="(record, index) => ({onClick: () => handleRowClick(record),style: { cursor: 'pointer' },})"
/>

高级功能

1. 编辑表格

<a-table:columns="editableColumns":dataSource="editableData"
/><script setup>
const editableColumns = ref([{title: '姓名',dataIndex: 'name',key: 'name',customRender: ({ text, record, index }) => {return h(EditableCell, {value: text,onChange: value => handleChange(value, record, 'name'),});},},// 其他列...
]);
</script>

2. 虚拟滚动 (大数据量优化)

<a-table:columns="columns":dataSource="largeData":scroll="{ x: 1500, y: 500 }"
/>

3. 表头分组

const columns = ref([{title: '个人信息',children: [{ title: '姓名', dataIndex: 'name', key: 'name' },{ title: '年龄', dataIndex: 'age', key: 'age' },],},{title: '联系信息',children: [{ title: '地址', dataIndex: 'address', key: 'address' },{ title: '电话', dataIndex: 'phone', key: 'phone' },],},
]);

常见问题解决方案

  1. 数据更新但视图不更新

    • 确保使用响应式数据 (refreactive)
    • 对于嵌套数据,可能需要深拷贝触发更新
  2. 自定义单元格内容

    • 使用 customRender 属性
    • 可以返回 Vue 组件或 JSX
  3. 性能优化

    • 大数据量使用虚拟滚动
    • 避免在 customRender 中进行复杂计算
    • 使用 rowKey 确保正确的行识别
  4. 固定列和表头

    • 设置 scroll 属性
    • 在列配置中使用 fixed: 'left'fixed: 'right'

Ant Design Vue 的 Table 组件功能非常丰富,以上只是核心功能的概述。实际使用时,建议参考官方文档获取最新和最详细的信息。

http://www.lqws.cn/news/507997.html

相关文章:

  • OSS阿里云
  • 实现OFD转换PDF文件的实用方法
  • Joblib库多进程/线程使用(一):使用generator参数实现边响应边使用
  • RISC-V三级流水线项目:总体概述和取指模块
  • 借助antd-design-x-vue实现接入通义千问大语言模型的对话功能(二) 新增思考内容展示
  • 使用 PyFluent 自动化 CFD
  • Reactor框架介绍,和使用示例
  • 内存泄漏和内存溢出的区别
  • ubuntu22.04修改IP地址
  • Camera Api 2 和 OPEN GL ES 使用(显示滤镜效果)
  • 【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战
  • 基于单片机的语音控制设计(论文)
  • 618风控战升级,瑞数信息“动态安全+AI”利剑出鞘
  • 09-StarRocks安全配置FAQ
  • 03-StarRocks查询优化FAQ
  • 服务器安装指南
  • PYTHON从入门到实践2-环境配置与字符串打印用法
  • 黑马Day01-03集开始
  • 轻量化实物建模革命:WebGL如何实现复杂模型的高效加载与交互
  • 增刊第2章:模型API封装与安全
  • 从虚拟机角度解释python3相对导入问题(下)
  • CasaOS中Docker部署SyncThing结合Cpolar实现公网文件同步方案
  • MemcacheRedis--缓存服务器理论
  • 解锁阿里云AnalyticDB:数据仓库的革新利器
  • 较大项目 git(gitee, github) 拉取失败解决方法
  • 想考华为HCIA-AI,应该怎么入门?
  • Python 数据分析与可视化 Day 6 - 可视化整合报告实战
  • 30天入门Python(基础篇)——第20天:输出格式美化详解
  • python果蔬种植销售一体化服务系统
  • Dify×奇墨科技:开源+本土化,破解企业AI落地难题