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 });

相关推荐
arvin_xiaoting1 小时前
OpenClaw学习总结_I_核心架构_8:SessionPruning详解
前端·chrome·学习·系统架构·ai agent·openclaw·sessionpruning
工程师老罗2 小时前
Image(图像)的用法
java·前端·javascript
swipe4 小时前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
问道飞鱼4 小时前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
CHU7290354 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
浩~~5 小时前
反射型XSS注入
前端·xss
AwesomeDevin5 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构
harrain5 小时前
antvG2折线图和区间range标记同时绘制
前端·javascript·vue.js·antv·g2
德育处主任Pro5 小时前
从重复搭建到高效生产,RollCode的H5开发新范式
前端
蜡台5 小时前
SPA(Single Page Application) Web 应用(即单页应用)架构模式 更新
前端·架构·vue·react·spa·spa更新