elementui table子级tree懒加载bug

  1. 删除子级刷新列表子级依然显示

2.更新状态子级列表未刷新

3.编辑子级后刷新页面显示状态未变更

el-table 树表格load源码

首先,load可以执行,但是只剩一个子节点就有问题,那么就直接可以定位bug在load方法里:

文件路径:element-plus\packages\components\table\src\store\tree.ts

const loadData = (row: T, key: string, treeNode) => {

const { load } = instance.props as unknown as TableProps<T>

if (load && !treeData.value[key].loaded) {

treeData.value[key].loading = true

load(row, treeNode, (data) => {

if (!Array.isArray(data)) {

throw new TypeError('[ElTable] data must be an array')

}

treeData.value[key].loading = false

treeData.value[key].loaded = true

treeData.value[key].expanded = true

// 就是这里,我们的子节点删完了data.length == 0,无法赋值

if (data.length) {

lazyTreeNodeMap.value[key] = data

}

instance.emit('expand-change', row, true)

})

}

}

增加方法手动刷新子级数据

// 刷新时

const refreshChild = (parentId) => {

if (rowMaps.get(parentId)) {

const { tree, treeNode, resolve } = rowMaps.get(parentId);

handleLoadTableChild(tree, treeNode, resolve);

} else {

sysTemp.value.getTableData();

}

};

// 先new一个map用于数据保存

const rowMaps = reactive(new Map());

load加载时存储父级id及数据信息

rowMaps.set(tree.id, { tree, treeNode, resolve });

相关推荐
heytoo1 分钟前
同一个模型,为什么结果差10倍?差的不是模型
前端·agent
霪霖笙箫2 分钟前
「JS全栈AI学习」九、Multi-Agent 系统设计:架构与编排
前端·面试·全栈
慕斯fuafua3 分钟前
CSS——定位
前端·css
Cache技术分享4 分钟前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
前端·后端
shadowcz0075 分钟前
Chrome Skills 来了:把你的 AI 提示词变成一键工具
前端·人工智能·chrome
踩着两条虫6 分钟前
VTJ核心引擎开源项目概览
前端·vue.js·低代码
Front思6 分钟前
解决 uniapp Dart Sass 2.0.0 弃用警告
前端·uni-app·sass
农夫山泉不太甜7 分钟前
CSS 新特性与冷门属性深度剖析
前端
Hy行者勇哥9 分钟前
Chrome 浏览器如何“网页长截图”和“网站打包成应用”
前端·chrome
说点AI16 分钟前
我的 Vibe Coding 工具箱:一个人如何从零做出一个产品
前端·后端