当前位置:首页 > VUE

vue实现目录列表

2026-02-18 20:25:42VUE

使用 Vue 实现目录列表

数据驱动渲染

通过 Vue 的 v-for 指令动态渲染目录结构,数据格式建议采用嵌套数组或树形结构。例如:

data() {
  return {
    menuItems: [
      { title: '首页', path: '/' },
      { 
        title: '产品', 
        children: [
          { title: '产品A', path: '/product/a' }
        ]
      }
    ]
  }
}

递归组件实现

对于多级目录,需创建递归组件。新建 MenuItem.vue 组件:

<template>
  <li>
    <router-link v-if="item.path" :to="item.path">{{ item.title }}</router-link>
    <span v-else>{{ item.title }}</span>
    <ul v-if="item.children">
      <menu-item 
        v-for="child in item.children" 
        :key="child.title" 
        :item="child" 
      />
    </ul>
  </li>
</template>

<script>
export default {
  name: 'MenuItem',
  props: ['item']
}
</script>

样式优化

添加基础样式增强可读性:

vue实现目录列表

ul {
  list-style-type: none;
  padding-left: 1em;
}
li {
  margin: 0.5em 0;
  position: relative;
}
a {
  text-decoration: none;
  color: #2c3e50;
}
a:hover {
  color: #42b983;
}

动态激活状态

结合 Vue Router 实现当前路由高亮:

computed: {
  isActive() {
    return this.$route.path === this.item.path
  }
}

模板中添加动态 class:

vue实现目录列表

<router-link 
  :class="{ 'active': isActive }" 
  :to="item.path"
>
  {{ item.title }}
</router-link>

交互功能扩展

添加折叠/展开功能:

data() {
  return {
    isOpen: false
  }
},
methods: {
  toggle() {
    this.isOpen = !this.isOpen
  }
}

模板中绑定点击事件:

<span @click="toggle" v-if="item.children">
  {{ item.title }} {{ isOpen ? '▼' : '▶' }}
</span>

标签: 目录列表
分享给朋友:

相关文章

vue实现文章目录

vue实现文章目录

Vue 实现文章目录的方法 使用插件自动生成目录 安装 vue-toc 插件: npm install vue-toc --save 在组件中引入并使用: <template> &…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

php 实现目录树

php 实现目录树

实现目录树的方法 在PHP中实现目录树功能,可以通过递归或迭代方式遍历文件系统。以下是两种常见的实现方法: 递归方法 递归是处理目录树的自然方式,适合层级不深的结构: function b…

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-fo…

vue实现列表页面

vue实现列表页面

Vue 列表页面实现方案 基础列表渲染 使用 v-for 指令渲染数组数据,配合 :key 提升性能: <template> <ul> <li v-for…

vue实现卡片列表

vue实现卡片列表

Vue 实现卡片列表 使用 v-for 动态渲染卡片列表 通过 Vue 的 v-for 指令可以动态渲染卡片列表,数据通常存储在组件的 data 或通过 API 获取。 <template&g…