当前位置:首页 > VUE

vue cli实现树形列表

2026-01-22 13:05:18VUE

使用 Vue CLI 实现树形列表

安装依赖

确保已安装 Vue CLI。若未安装,可通过以下命令全局安装:

npm install -g @vue/cli

创建一个新的 Vue 项目:

vue create tree-list-demo

数据结构设计

树形列表通常需要嵌套数据结构。例如:

const treeData = [
  {
    id: 1,
    label: 'Parent 1',
    children: [
      {
        id: 2,
        label: 'Child 1',
        children: []
      }
    ]
  }
];

递归组件实现

创建一个递归组件 TreeItem.vue 来渲染树形结构:

<template>
  <li>
    <div @click="toggle">
      {{ node.label }}
    </div>
    <ul v-if="isOpen && node.children.length">
      <TreeItem
        v-for="child in node.children"
        :key="child.id"
        :node="child"
      />
    </ul>
  </li>
</template>

<script>
export default {
  name: 'TreeItem',
  props: {
    node: {
      type: Object,
      required: true
    }
  },
  data() {
    return {
      isOpen: false
    };
  },
  methods: {
    toggle() {
      this.isOpen = !this.isOpen;
    }
  }
};
</script>

主组件调用

在主组件 App.vue 中引入并调用递归组件:

<template>
  <div>
    <ul>
      <TreeItem
        v-for="node in treeData"
        :key="node.id"
        :node="node"
      />
    </ul>
  </div>
</template>

<script>
import TreeItem from './components/TreeItem.vue';

export default {
  components: { TreeItem },
  data() {
    return {
      treeData: [
        {
          id: 1,
          label: 'Parent 1',
          children: [
            {
              id: 2,
              label: 'Child 1',
              children: []
            }
          ]
        }
      ]
    };
  }
};
</script>

样式优化

为树形列表添加基础样式,例如缩进和交互效果:

ul {
  list-style-type: none;
  padding-left: 20px;
}
li div {
  cursor: pointer;
  padding: 5px;
}
li div:hover {
  background-color: #f0f0f0;
}

动态加载数据

若需动态加载子节点,可通过事件触发异步加载:

methods: {
  async loadChildren(node) {
    if (!node.children.length) {
      const response = await fetch(`/api/children/${node.id}`);
      node.children = await response.json();
    }
    this.isOpen = true;
  }
}

使用第三方库

若需更复杂功能,可考虑使用现成的树形组件库,如 vue-tree-list

npm install vue-tree-list

示例集成:

<template>
  <vue-tree-list
    :model="treeData"
    @click="onClick"
  />
</template>

<script>
import { VueTreeList } from 'vue-tree-list';

export default {
  components: { VueTreeList },
  data() {
    return {
      treeData: { /* 嵌套结构 */ }
    };
  }
};
</script>

通过以上步骤,可实现一个基础的树形列表,支持递归渲染、动态加载和交互功能。根据实际需求调整数据结构和样式即可。

vue cli实现树形列表

标签: 列表vue
分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed:…

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…

vue中登陆实现逻辑

vue中登陆实现逻辑

Vue 中登录实现逻辑 前端实现逻辑 表单验证 使用 Vue 的表单验证库(如 VeeValidate)或自定义验证规则,确保用户输入的账号和密码符合要求。例如,检查邮箱格式、密码长度等。 发送登…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock…

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-to…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…