Element UI el-tree 保存当前展开节点,再次异步获取树结构数据时默认展开当前保存的节点

本文介绍如何在使用Element UI的el-tree组件时,保存已展开的树节点,以实现数据更新后保持之前的展开状态。通过监听节点展开和关闭事件,将节点ID存储在defaultShowNodes数组中,实现树状数据的持久化展示。

之前的一篇博客写了 el-tree 默认展开节点 https://blog.csdn.net/z291493823/article/details/102862325

项目有新需求,要添加删除树结构的数据,但是每次操作完再请求数据,树又回到了初始状态,于是想到把当前展开的节点保存起来,再请求回来就默认打开了

<el-tree
	ref="tree"
	v-loading="treeLoading"
	:data="studentTree"
	:props="defaultProps"
	:highlight-current="true"
	node-key="id"
	:default-expanded-keys="defaultShowNodes"
	@node-click="handleTree"
	@node-expand="handleNodeExpand"
	@node-collapse="handleNodeCollapse">
</el-tree>
data () {
	return {
		studentTree: [], // 我的树结构数据
		defaultShowNodes: [] // 这里存放要默认展开的节点 id
	}
}

调用 Element el-tree 的事件: @node-expand 节点被展开时触发的事件 和 @node-collapse 节点被关闭时触发的事件

// 树节点展开
handleNodeExpand (data) {
	// 保存当前展开的节点
	let flag = false
	this.defaultShowNodes.some(item => {
		if (item === data.id) { // 判断当前节点是否存在, 存在不做处理
			flag = true
			return true
		}
	})
	if (!flag) { // 不存在则存到数组里
		this.defaultShowNodes.push(data.id)
	}
},
// 树节点关闭
handleNodeCollapse (data) {
	this.defaultShowNodes.some((item, i) => {
		if (item === data.id) {
			// 删除关闭节点
			this.defaultShowNodes.length = i
		}
	})
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZionHH

落魄前端,在线炒粉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值