ant-design-vue中的tree组件 用的自己定义的数据,想做添加同级和添加下级的操作时,数据加进去后无法点击展开和收缩
let treeData: TreeProps['treeData'] = [
{
title: 'Setup',
key: '0-0',
children: [
{
title: 'Display and brightness',
key: '0-0-0',
children: [
{ title: 'Rest screen style', key: '0-0-0-0' },
{
title: 'screen style',key: '0-0-0-1',
},
{ title: 'Auto lock', key: '0-0-0-2' },
],
},
{
title: 'Portable tools',
key: '0-0-1',
children: [{ title: 'gesture', key: '0-0-1-0' }],
},
{
title: 'System settings',
key: '0-0-2',
children: [
{ title: 'Reset system', key: '0-0-2-0' },
{
title: 'Background refresh',
key: '0-0-2-1',
},
],
},
],
}]
// 点击添加下级节点的方法,获取当前的key(添加下级节点时,都加children,)
const pushSubtree = (obj: any) => {
newChild.key = obj.data.key + newChild.key
autoExpandParent.value = true;
obj.data.children.push(newChild)
newChild.key='/'
treeData = [...treeData!]
expandedKeys.value = [obj.data.key];
console.log(expandedKeys.value);
obj.expanded=false
console.log(treeData);
}
// 添加同级时,需获取上级父节点的key,在上级父节点中push
const pushtree = (obj: any) => {
console.log(obj);
// 获取父节点
let parentNode = getTreeParentChilds(treeData, obj.data.key)
console.log(parentNode);
// 获取父节点的key与 将当前节点的key,与要添加的key拼接
let parentKey = getTreeParentKey(treeData, parentNode)
console.log(parentKey);
newChild.key = parentKey + newChild.key
console.log(newChild.key );
parentNode.push(newChild)
treeData = [...treeData!]
console.log(treeData);
// autoExpandParent.value = true;
// expandedKeys.value = [parentKey];
newChild.key='/'
}
做的是添加完自动展开当前添加的节点,但是报这样的错
treeUtil.js:380 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'parent')
at getTreeNodeProps (treeUtil.js:380:20)
at ReactiveEffect.fn (TreeNode.js:60:14)
at ReactiveEffect.run (reactivity.esm-bundler.js:185:25)
at get value [as value] (reactivity.esm-bundler.js:1147:39)
at TreeNode.js:73:34
at watchEffect.flush (eagerComputed.js:5:20)
at callWithErrorHandling (runtime-core.esm-bundler.js:155:22)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js:164:21)
at ReactiveEffect.getter [as fn] (runtime-core.esm-bundler.js:1723:24)
at ReactiveEffect.run (reactivity.esm-bundler.js:185:25)
//报错的文件位置是这里
export function getTreeNodeProps(key, _ref3) {
var expandedKeysSet = _ref3.expandedKeysSet,
selectedKeysSet = _ref3.selectedKeysSet,
loadedKeysSet = _ref3.loadedKeysSet,
loadingKeysSet = _ref3.loadingKeysSet,
checkedKeysSet = _ref3.checkedKeysSet,
halfCheckedKeysSet = _ref3.halfCheckedKeysSet,
dragOverNodeKey = _ref3.dragOverNodeKey,
dropPosition = _ref3.dropPosition,
keyEntities = _ref3.keyEntities;
var entity = keyEntities[key];
var treeNodeProps = {
eventKey: key,
expanded: expandedKeysSet.has(key),
selected: selectedKeysSet.has(key),
loaded: loadedKeysSet.has(key),
loading: loadingKeysSet.has(key),
checked: checkedKeysSet.has(key),
halfChecked: halfCheckedKeysSet.has(key),
pos: String(entity ? entity.pos : ''),
parent: entity.**parent**,
// [Legacy] Drag props
// Since the interaction of drag is changed, the semantic of the props are
// not accuracy, I think it should be finally removed
dragOver: dragOverNodeKey === key && dropPosition === 0,
dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,
dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1
};
return treeNodeProps;
}
尝试了很多方法,都没达到想要的效果
最终想要的效果是可以再当前节点添加同级,添加下级,添加的下级可以是子菜单,也可以是目录的形式