由于 antd 组件并未提供点击文字展开节点的方法 需要自定义方法来操作展开或者关闭节点

在这里插入图片描述
文档中 expandedKeys 属性是用来控制哪些节点是展开的

<template>
	<a-tree
         v-model:selectedKeys="selectedKeys"
         :expanded-keys="expandedKeys"
         :tree-data="treeData"
         :fieldNames="fieldNames"
         @expand="handleExpand"
         @select="select"
	  />
</template>
<script setup lang="ts">
	import _ from 'lodash';
    import { onMounted, onUnmounted, ref } from 'vue';
	//自定义字段匹配接口返回的内容
	const fieldNames = {
	       children: 'childList',
	       title: 'name',
	       key: 'id',
    };
    //模拟数据
	const treeData = ref([
		{
		    name: 'parent 2',
		    id: '1-0',
		    childList: [
		      {
		        name: 'parent 2-0',
		      id  : '1-0-0',
		      },
		      {
		        name: 'parent 2-1',
		        id  : '2-0-1',
		      },
		    ],
		  },
	]);
    const expandedKeys = ref<string[]>([]);
    const selectedKeys = ref<string[]>();
    const handleExpand = (keys: string[], { expanded, node }) => {
        const tempKeys = ((node.parent ? node.parent.children : treeData.value) || []).map(({ key }) => key);
        if (expanded) {
            expandedKeys.value = _.difference(keys, tempKeys).concat(node.key);
        } else {
            expandedKeys.value = keys;
        }
    };
    //点击文字触发
    function select(selectedKeys, e) {
        console.log('select', selectedKeys);
        console.log('e', e);
        if (e.node.childList) {
            //判断当前项 是否在已经展开keys数组 如果不在则展开 否则关闭
            let index = expandedKeys.value.indexOf(e.node.id);
            if (index === -1) {
                expandedKeys.value.push(e.node.id);
            } else {
                expandedKeys.value = expandedKeys.value.filter((item) => item !== e.node.id);
            }
        }
    }
</script >
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐