vue3项目中使用Arco Design的Table表格组件expandable展开行属性结合h()函数生成表格嵌套表格效果

文章目录

  • 需求
  • 实现方式
    • 方式一
    • 方式二
  • 操作父元素时默认收起当前展开行

需求

vue3项目中使用Arco Design - Table结合 vue3-h()函数实现表格嵌套表格的效果

实现方式

方式一

1、给Table组件设置表格的“展开行配置”参数:expandable

<a-table :expandable="expandable"></a-table>

2、结合“自定义展开行内容”参数:expandedRowRender
3、引入h()函数、引入Table组件

import {h } from 'vue';
import { Table } from '@arco-design/web-vue';

整体示例代码如下(具体信息已用注释形式标出):

// template
<a-table :expandable="expandable"></a-table> // 父表格// script
<script lang="ts" setup>
import {h } from 'vue';// 引入h()组件
import { Table } from '@arco-design/web-vue'; // 引入Table组件const expandable = reactive({title: '', // 上图左上角格子的展示值width: 60, // 根据需要设置宽度,为了使左侧第一列空白(只展示+ -)expandedRowRender: (record: any) => { // record:当前行数据if (record.id === 1) { // 根据自己需要,选择让某行具有展开效果return h(Table, { // Table组件已在上方引入pagination: false, // 隐藏分页columns: [ // columns数组值调取接口获取{title: '',dataIndex: '',width: 60, // 设置空白列,为了使左侧第一列只展示+ -},{title: '子名称',dataIndex: 'name',},{title: '子金额',dataIndex: 'salary',},{title: '子邮箱',dataIndex: 'email',},],data: [ // data内容调取接口获取{key: '1',name: 'Jane Doe',salary: 23000,address: '32 Park Road, London',email: 'jane.doe@example.com',}, {key: '2',name: 'Alisa Ross',salary: 25000,address: '35 Park Road, London',email: 'alisa.ross@example.com'}, {key: '3',name: 'Kevin Sandra',salary: 22000,address: '31 Park Road, London',email: 'kevin.sandra@example.com'}, ],});}return false;},});
</script>

方式二

1、给Table组件设置表格的“展开行配置”参数:expandable
2、结合expand-row插槽
在插槽中,可以放置自定义的子表格或其他内容。当点击展开按钮时,会显示expand - row插槽中的内容,再次点击则收起。

示例代码如下:

// template
<a-table :expandable="expandable"><template #expand-row='{ record }'>// 下面展示子表格,根据需求对子table进行属性配置<a-table></a-table></template>
</a-table>
// script
const expandable = reactive({title: '', // 上图左上角格子的展示值width: 60,
})

操作父元素时默认收起当前展开行

实现思路
状态管理:运用一个响应式变量来记录当前展开行的 key。
监听操作事件:在父元素操作的事件处理函数里,把展开行的状态重置。
控制展开状态:利用 expandedRowKeys 属性和 onExpand 事件来控制展开行的显示与隐藏。

示例代码:

<template><div><!-- 模拟父元素操作按钮 --><a-button @click="handleParentAction">操作父元素</a-button><a-table:columns="columns":data-source="dataSource":expandable="{expandedRowKeys: expandedRowKeys,onExpand: handleExpand}"><template #expand-row="{ record }"><p>这是展开行的内容,记录 ID: {{ record.id }}</p></template></a-table></div>
</template><script lang="ts" setup>
import { ref } from 'vue';
import { Table, Button } from '@arco-design/web-vue';// 表格列配置
const columns = [{title: 'ID',dataIndex: 'id',width: 100},{title: '姓名',dataIndex: 'name',width: 150}
];// 表格数据源
const dataSource = [{key: '1',id: 1,name: '张三'},{key: '2',id: 2,name: '李四'},{key: '3',id: 3,name: '王五'}
];// 记录当前展开行的 key
const expandedRowKeys = ref<string[]>([]);// 处理展开行事件
const handleExpand = (expanded: boolean, record: any) => {if (expanded) {expandedRowKeys.value = [record.key];} else {expandedRowKeys.value = [];}
};// 处理父元素操作事件
const handleParentAction = () => {// 重置展开行状态expandedRowKeys.value = [];
};
</script>

代码解释:
状态管理:借助 ref 创建 expandedRowKeys 来记录当前展开行的 key。
表格配置:在 Table 组件里,使用 expandable 属性进行配置,把 expandedRowKeys 传递给 expandable,并通过 onExpand 事件处理展开行的操作。
处理展开行事件:在 handleExpand 函数中,依据 expanded 状态更新 expandedRowKeys。
处理父元素操作事件:在 handleParentAction 函数中,将 expandedRowKeys 重置为空数组,以此实现收起当前展开行的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 模型测试

在使用 PyTorch 进行模型测试时,一般包含加载测试数据、加载训练好的模型、进行推理以及评估模型性能等步骤。以下为你详细介绍每个步骤及对应的代码示例。 1. 导入必要的库 import torch import torch.nn as nn import torchvision import torchvision.transforms as trans…

VirtualBox虚拟机转VM虚拟机

前言&#xff1a;部分靶机只适用于VirtualBox&#xff0c;VM打不开VirtualBox的文件&#xff0c;所以需要进行转换 前置条件&#xff1a;本机已经下载VM和VirtualBox 第一步&#xff1a;文件转换 找到VirtualBox.exe所在位置&#xff0c;启动cmd窗口 文件转换的命令&#xf…

【零基础C语言】第四节 数组

【零基础C语言系列】 【零基础C语言】第一节 C语言概述【数制进制码制】-CSDN博客 【零基础C语言】第二节 数据类型、运算符、表达式-CSDN博客 【零基础C语言】第三节 控制结构-CSDN博客 一、一维数组

DeepSeek API使用及私有化部署

DeepSeek 大模型概述 DeepSeek 是一款参数量高达 671B 的大语言模型&#xff0c;其模型参数文件规模庞大&#xff0c;即使是经过优化的版本&#xff0c;参数文件也有数十 GB。这种庞大的参数量赋予了 DeepSeek 强大的自然语言处理能力&#xff0c;使其能够处理复杂的语言任务&…

动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…

IDEA 使用codeGPT+deepseek

一、环境准备 1、IDEA 版本要求 安装之前确保 IDEA 处于 2023.x 及以上的较新版本。 2、Python 环境 安装 Python 3.8 或更高版本 为了确保 DeepSeek 助手能够顺利运行&#xff0c;您需要在操作系统中预先配置 Python 环境。具体来说&#xff0c;您需要安装 Python 3.8 或更高…

C++(蓝桥杯常考点)

前言&#xff1a;这个是针对于蓝桥杯竞赛常考的C内容&#xff0c;容器这些等下棋期再讲 C 在DEVC中注释和取消注释的方法&#xff1a;ctrl/ ASCII值&#xff08;常用的&#xff09;&#xff1a; A-Z:65-90 a-z:97-122 0-9:48-57 换行/n:10科学计数法&#xff1a;eg&#xff1a…

vue These dependencies were not found

These dependencies were not found: * vxe-table in ./src/main.js * vxe-table/lib/style.css in ./src/main.js To install them, you can run: npm install --save vxe-table vxe-table/lib/style.css 解决&#xff1a; nodejs执行以下语句 npm install --save vxe-t…

【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】

去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…

安卓基础组件Looper - 03 java层面的剖析

文章目录 workflow工作线程 准备Looper创建LooperActivity主线程其他情况 Looper.prepare()大体流程java申请Loopernew LooperMessageQueue初始化 nativejniNativeMessageQueue Looper.loop()大体流程java获取Looper获取msg&#xff0c;处理msgLooper.loop()Looper.loopOnce &a…

docker关闭mysql端口映射的使用

需求 项目中的数据库为mysql&#xff0c;如果将端口映射到宿主机上&#xff0c;容易被工具扫描出&#xff0c;且随着国产化的进程推进&#xff0c;mysql将不被允许。为了提高安全性与满足项目需求&#xff0c;这里采用隐藏mysql端口方式&#xff0c;不映射宿主机端口&#xff…

fps项目总结:动画蓝图

文章目录 状态不同状态的并存性。 状态 不同状态的并存性。

【计算机网络】考研复试高频知识点总结

文章目录 一、基础概念1、计算机⽹络的定义2、计算机⽹络的目标3、计算机⽹络的组成4、计算机⽹络的分类5、计算机⽹络的拓扑结构6、计算机⽹络的协议7、计算机⽹络的分层结构8、OSI 参考模型9、TCP/IP 参考模型10、五层协议体系结构 二、物理层1、物理层的功能2、传输媒体3、 …

健康医疗大数据——医疗影像

一、 项目概述 1.1 项目概述 1.2 项目框架 1.3 项目环境 1.4 项目需求 二、项目调试与运行 2.1需求分析 2.2具体实现 三、项目总结 项目概述 项目概述 本项目旨在应用大数据技术于医疗影像领域&#xff0c;通过实训培养团队成员对医疗大数据处理和分析的实际…

Mybatis-Plus 配合Sharding-JDBC 实现分库分表

在现代数据库设计中&#xff0c;随着数据量的不断增长&#xff0c;单一数据库往往无法满足高并发、高性能的业务需求。因此&#xff0c;分库分表策略成为数据库架构优化的重要手段。本文将介绍分库分表的基本概念&#xff0c;并重点探讨垂直拆分与水平拆分的区别&#xff0c;以…

3.1、密码学基础

目录 密码学概念与法律密码安全分析密码体制分类 - 私钥密码/对称密码体制密码体制分类 - 公钥密码/非对称密码体制密码体制分类 - 混合密码体制 密码学概念与法律 密码学主要是由密码编码以及密码分析两个部分组成&#xff0c;密码编码就是加密&#xff0c;密码分析就是把我们…

同一个问题对比

问题&#xff1a;如何看torch 和torchvision版本&#xff0c;如何看CUDA的版本&#xff0c;我是ubuntu的系统。 chat复制粘贴很好用。 一、chat 在 Ubuntu 下&#xff0c;你可以使用以下命令来检查 Torch&#xff08;PyTorch&#xff09;、Torchvision 以及 CUDA 版本信息。 …

Unity 对象池技术

介绍 是什么&#xff1f; 在开始时初始化若干对象&#xff0c;将它们存到对象池中。需要使用的时候从对象池中取出&#xff0c;使用完后重新放回对象池中。 优点 可以避免频繁创建和销毁对象带来性能消耗。 适用场景 如果需要对某种对象进行频繁创建和销毁时&#xff0c;例…

Github 2025-03-03 开源项目周报Top14

根据Github Trendings的统计,本周(2025-03-03统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5TypeScript项目4Jupyter Notebook项目3Go项目2JavaScript项目2C++项目2Vue项目1Rust项目1Dify.AI: 开源的LLM应用程序开发平台 创建…

spark 虚拟机基本命令(2)

cp 命令&#xff0c;复制 格式&#xff1a;cp 源文件 目标文件 cp -r 命令 复制目录 格式&#xff1a;cp -r 源文件 目标文件夹 mv 命令&#xff0c;重命名和移动 格式&#xff1a;mv 源文件 目标文件 说明&#xff1a;若源文件和目标文件在同一个目录下&#xff0c;就是重命…