Element UI el-tree saves the current expanded node, and expands the currently saved node by default when obtaining tree structure data asynchronously again

Problem: After setting the default expanded node, you need to record the current expanded node and set the default expansion when re-rendering the data. 

<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
	}
}
// 树节点展开
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
		}
	})
}

More detailed reference address: http://raboninco.com/1hMzC

Guess you like

Origin blog.csdn.net/z00001993/article/details/107916946