el-tree的updateKeyChildren方法,调用后不能局部更新树问题,原因是,我写了以下的语句:
let targetChildrenNodes = targetParentNode.data.children || [];
if ((!targetParentNode.data.hasntChild && targetChildrenNodes && targetChildrenNodes.length > 0) || targetParentNode.data.hasntChild) {
let index = targetChildrenNodes.filter(node => node.nodeId.indexOf('F') === 0).length;
targetChildrenNodes.splice(index, 0, currentNode.data)
setTimeout(() => {
this.$refs.dataIntDevLeftTree.updateKeyChildren(nodeId, targetChildrenNodes);
}, 20)
}
实际上第一句这里要改成:
let targetChildrenNodes = utils.objDeepCopy(targetParentNode.data.children || []);
把要更新的节点的children取出来之后要深拷贝一份出来,和原来的区分存储空间,这样updateKeyChildren就可以更新,不会出现莫名其妙的父节点收起或者更新不全的问题