当前位置:首页 > VUE

vue实现多级列表

2026-01-18 13:11:42VUE

实现多级列表的两种常见方法

递归组件法
通过组件递归调用自身实现嵌套渲染,适合动态层级数据。

  • 定义组件时通过name属性使其可递归调用。
  • 模板中使用v-for遍历数据,嵌套部分通过条件渲染递归组件。

示例代码:

vue实现多级列表

<template>
  <ul>
    <li v-for="item in list" :key="item.id">
      {{ item.name }}
      <tree-list v-if="item.children" :list="item.children"/>
    </li>
  </ul>
</template>

<script>
export default {
  name: 'TreeList', // 关键:定义name以便递归
  props: ['list']
}
</script>

静态模板法
直接编写嵌套模板结构,适合固定层级场景。

vue实现多级列表

  • 使用多层v-for嵌套,每层对应一级数据。
  • 代码直观但灵活性较低,需手动维护层级。

示例代码:

<template>
  <ul>
    <li v-for="item in list" :key="item.id">
      {{ item.name }}
      <ul v-if="item.children">
        <li v-for="child in item.children" :key="child.id">
          {{ child.name }}
        </li>
      </ul>
    </li>
  </ul>
</template>

关键注意事项

  • 数据格式:要求嵌套结构包含children字段,如{ id: 1, name: '一级', children: [...] }
  • 性能优化:深层次嵌套时建议添加v-memo或虚拟滚动
  • 样式控制:通过CSS类名(如.level-1/.level-2)区分不同层级缩进

动态加载扩展

若需懒加载子级数据,可结合@click事件和异步请求:

<li @click="loadChildren(item)">
  {{ item.name }}
  <span v-if="item.isLoading">加载中...</span>
</li>

methods: {
  async loadChildren(item) {
    item.isLoading = true;
    item.children = await fetchChildrenData(item.id);
    item.isLoading = false;
  }
}

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

相关文章

vue实现tab标签

vue实现tab标签

Vue 实现 Tab 标签的方法 使用动态组件和 v-for 渲染标签 通过 v-for 循环生成标签页标题,结合 v-bind:class 动态切换激活状态。使用 v-show 或动态组件 <…

vue实现组件循环

vue实现组件循环

Vue 组件循环的实现方法 在 Vue 中实现组件循环通常使用 v-for 指令,可以循环渲染数组或对象的数据到组件上。 基本数组循环 通过 v-for 指令遍历数组,渲染多个相同结构的组件。…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 me…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:…

vue实现多用户登录

vue实现多用户登录

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

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…