vue的treeselect设置默认选中节点时报错,this.$refs.tree.setCheckedKeys is not a function
时间: 2024-03-20 16:43:36 浏览: 123
element-ui tree树形控件:default-checked-keys 设置空数组 默认还是选中状态问题
5星 · 资源好评率100%
`this.$refs.tree.setCheckedKeys is not a function` 这个错误一般是因为你在组件 `mounted` 钩子中调用了 `setCheckedKeys` 方法,但此时 DOM 尚未渲染完成,`this.$refs.tree` 还未被正确引用。为了避免这个错误,你可以在组件的 `nextTick` 回调函数中调用 `setCheckedKeys` 方法。具体代码如下:
```vue
<template>
<el-tree-select
ref="tree"
:data="treeData"
:props="defaultProps"
v-model="selectedKeys"
></el-tree-select>
</template>
<script>
export default {
data() {
return {
treeData: [
{
id: 1,
label: 'Node1',
children: [
{
id: 2,
label: 'Node1-1'
},
{
id: 3,
label: 'Node1-2'
}
]
},
{
id: 4,
label: 'Node2',
children: [
{
id: 5,
label: 'Node2-1'
},
{
id: 6,
label: 'Node2-2'
}
]
}
],
defaultProps: {
children: 'children',
label: 'label'
},
selectedKeys: [2, 3] // 设置默认选中节点的 id 数组
}
},
mounted() {
this.$nextTick(() => {
this.$refs.tree.setCheckedKeys(this.selectedKeys) // 在 nextTick 回调函数中调用 setCheckedKeys 方法
})
}
}
</script>
```
在这个例子中,我们在组件的 `data` 中设置了默认选中节点的 id 数组 `selectedKeys`,然后在组件的 `mounted` 钩子中,使用 `this.$nextTick` 方法等待 DOM 渲染完成后再调用 `setCheckedKeys` 方法,将默认选中的节点设置为选中状态。
阅读全文