【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点

一、defaultExpandAll 默认展开所有树节点

1、需求:默认展开所有树节点

2、问题:

v-if="data.length"判断的层级不够,只判断到了物理那一层,所以只展开到那一层。

3、原因分析:

默认展开所有树节点, 如果是异步数据,需要在数据返回后再实例化,建议用 v-if="data.length";当有 expandedKeys 时,defaultExpandAll 将失效。

4、解决办法:

判断:到最里面的那一层数据都有了之后再渲染。

二、点击文字可以"选中/取消选中"节点

1、需求:点击文字选中/取消选中节点

2、解决办法:

javascript 复制代码
<a-tree
    checkable
    v-model="checkedKeys":tree-data="treeData"
    @select="treeNodeSelect">
</a-tree>

/**
* @description: 点击文字也能选中
* @return {*}
*/
const treeNodeSelect= (selectedKeys, e) => {
    // 转成真正的数组
    const toArray = (list) => Array.from(list || []);
    // 获取被点击的树节点
    const node = e.nativeEvent.path.find((item) => {
      return toArray(item.classList).findIndex(className => className === "ant-tree-treenode-switcher-open") !== -1;
    });
    // 获取checkbox复选框
    const checkbox = toArray(node.childNodes).find((item) => {
      return toArray(item.classList).findIndex(className => className === "ant-tree-checkbox") !== -1;
    })
    // 模拟点击
    checkbox && checkbox.click();
};

3、参考链接:

ant-design-vue tree组件选中节点也可以勾选上checkbox

相关推荐
我是ed2 分钟前
# Vue 前端封装组件基础知识点
前端
芜青3 分钟前
JavaScript手录进阶01-跨域问题
开发语言·javascript·ajax·ecmascript
芦苇Z6 分钟前
CSS :has() 父级选择器与关系查询
前端·css
前端康师傅8 分钟前
Javascript 中循环的使用
前端·javascript
毕了业就退休12 分钟前
从 WebSocket 转向 SSE:轻量实时推送的另一种选择
前端·javascript·https
子兮曰13 分钟前
🚀 图片加载速度提升300%!Vue/React项目WebP兼容方案大揭秘
前端·vue.js·react.js
郭俊强14 分钟前
nestjs 阿里云服务端签名
前端·网络·阿里云
wordbaby16 分钟前
用 useReducer 优雅管理 React 状态
前端·react.js
不爱说话郭德纲20 分钟前
还记得第一次遇到内存泄漏的场景嘛?
前端·面试·性能优化
南囝coding25 分钟前
2025 最新!独立开发者穷鬼套餐
前端·后端