vue3中antd tree组件使用expandedKeys无法收起
时间: 2023-08-02 11:06:34 浏览: 201
在Vue3中使用Antd Tree组件时,使用`expandedKeys`属性来控制展开或折叠节点时,需要注意以下几点:
1. `expandedKeys`是一个双向绑定的属性,需要使用`.sync`修饰符来实现双向绑定。
2. 收起节点时,需要在`onExpand`事件中更新`expandedKeys`数组的值,同时需要使用`.sync`修饰符将更新后的`expandedKeys`数组传递给Tree组件的`expandedKeys`属性。
以下是一个示例代码段,用于收起key为`node1`的节点:
```
<template>
<a-tree :expanded-keys.sync="expandedKeys" :on-expand="handleExpand">
<a-tree-node key="node1" title="Node 1">
<a-tree-node key="node1-1" title="Node 1-1"></a-tree-node>
<a-tree-node key="node1-2" title="Node 1-2"></a-tree-node>
</a-tree-node>
<a-tree-node key="node2" title="Node 2"></a-tree-node>
</a-tree>
</template>
<script>
import { defineComponent, reactive } from 'vue';
export default defineComponent({
setup() {
const state = reactive({
expandedKeys: ['node1'],
});
const handleExpand = (expandedKeys) => {
state.expandedKeys = expandedKeys;
};
return {
...state,
handleExpand,
};
},
});
</script>
```
在上面的代码中,我们使用了Vue3的响应式数据(reactive)来定义了一个名为`state`的状态对象,其中包含了一个名为`expandedKeys`的数组,用于控制树的展开状态。我们将`expandedKeys`数组传递给Tree组件的`expanded-keys`属性,并使用`.sync`修饰符实现双向绑定。在`on-expand`事件中,我们更新了`expandedKeys`数组的值,并使用`.sync`修饰符将更新后的`expandedKeys`数组传递给Tree组件的`expanded-keys`属性。
当我们点击节点时,会触发`on-expand`事件,并在事件处理函数中更新`expandedKeys`数组的值。如果该节点的key已经在`expandedKeys`数组中,我们就从该数组中移除该节点的key,从而收起该节点。如果该节点的key不在`expandedKeys`数组中,我们就将该节点的key添加到`expandedKeys`数组中,从而展开该节点。最后,我们将更新后的`expandedKeys`数组传递给Tree组件的`expanded-keys`属性,实现双向绑定。
阅读全文