tdesign坑之EnhancedTable树形结构默认展开所有行

文章介绍了在官方实例中控制树形表格展开节点的两种方法,一是通过defaultExpandAll属性,但仅在初始化数据时有效;二是使用expandAll()方法,但需处理异步问题。推荐使用动态key来解决数据更新后重新渲染的问题,尽管第二种方法在网络状况不佳时体验较差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

⚠️在官方实例中,树形结构的表格提供了2种方法控制展开全部节点:

一是通过配置属性tree.defaultExpandAll为true代表默认展开全部节点(仅默认情况有效);

二是使用组件实例方法expandAll()可以自由控制树形结构的展开;

(1)第一种方法需要注意的是仅初始化数据的时候有效,在以下场景中使用无效:

已为EnhancedTable组件配置了defaultExpandAll为true,在onMounted页面元素挂载完数据之后给表格数据data赋值,

<ZnEnhanceTable
  ref="tableRef"
  row-key="id"
  :data="tableData"
  :columns="tableColumns"
  :tree="{
    defaultExpandAll: true, // 默认展开所有节点
  }"
  :tree-expand-and-fold-icon="treeExpandAndFoldIconRender"
>

但此时树形结构仍是收起状态:
在这里插入图片描述

由于该属性仅初始化数据的时候有效,而在onMounted生命周期中组件实例已挂载完毕,初始化数据是空数组:[],无数据可展开,等待接口请求完毕后再赋值视图不再刷新,所以页面展示节点仍是收起状态。(验证:在onBeforeMount生命周期中做数据赋值能展开所有行,在onMounted生命周期中则无效)

解决方案给组件绑定动态key值,这样就算接口数据请求回来也会重新渲染树结构,初始化数据。

<ZnEnhanceTable
  ref="tableRef"
  row-key="id"
  :key="tableData.length"
  :data="tableData"
  :columns="tableColumns"
  :tree="{
    defaultExpandAll: true, // 默认展开所有节点
  }"
  :tree-expand-and-fold-icon="treeExpandAndFoldIconRender"
 >

(2)第二种方法需要注意的是在接口数据请求回来后存在异步问题,直接调用组件实例方法expandAll()控制树形结构的展开有可能会失效。

解决方案利用延时函数,在事件循环中会把延时队列中的方法放在微任务之后执行。

setTimeout(async () => {
  await tableRef.value.expandAll();
}, 0);

缺点:等待接口请求数据赋值完之后再手动调用组件实例方法的话,在网络卡顿情况下会有明显的停滞感,用户体验不佳。

综上所述,采用第一种配置方法更合理些。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值