当前位置:首页 > VUE

vue实现多级列表

2026-01-18 13:11:42VUE

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

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

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

示例代码:

<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>

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

  • 使用多层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事件和异步请求:

vue实现多级列表

<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 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <template&…

vue实现分发

vue实现分发

Vue 实现分发的方法 在 Vue 中,分发(Distribution)通常指的是将内容从父组件传递到子组件,或者通过插槽(Slots)机制让父组件控制子组件的部分渲染内容。以下是几种常见的实现分发的…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…

vue for实现

vue for实现

Vue 中的 v-for 指令 v-for 是 Vue.js 中用于渲染列表数据的核心指令,通过遍历数组或对象生成动态内容。 基本语法(数组) <ul> <li v-for…