当前位置:首页 > 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实现中台

vue实现中台

Vue 实现中台系统的关键步骤 技术选型与基础搭建 使用 Vue 3(Composition API)或 Vue 2(Options API)作为前端框架,搭配 Vue Router 实现路由管理,V…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录组…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现 单选

vue实现 单选

实现 Vue 单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 可以轻松实现单选功能,将单选按钮的值绑定到同…

vue实现treeview

vue实现treeview

Vue 实现 TreeView 的方法 使用递归组件实现 TreeView 递归组件是 Vue 中实现 TreeView 的常见方式。通过组件调用自身,可以轻松处理嵌套的树形结构数据。 <t…