当前位置:首页 > 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实现商品列表需要结合数据绑定、组件化和状态管理。以下是实现商品列表的几种常见方法: 基础数据绑定实现 在Vue组件中定义商品数据数组,使用v-for指令循环渲染商…

vue实现文本列表

vue实现文本列表

Vue 实现文本列表的方法 Vue 可以通过多种方式实现文本列表的渲染和管理,以下是几种常见的方法: 使用 v-for 指令渲染列表 通过 v-for 指令可以动态渲染数组或对象中的文本列表。 &…

vue 实现列表多选

vue 实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动处理多选逻辑。适用于复选框(checkbox)场景。 <template> &…

vue实现列表组件

vue实现列表组件

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

vue实现列表滚动

vue实现列表滚动

Vue 实现列表滚动的方法 使用 CSS 实现滚动 通过 CSS 的 overflow 属性可以轻松实现列表滚动。在 Vue 的模板中,为列表容器添加 overflow-y: auto 或 overf…

vue视频列表实现

vue视频列表实现

Vue 视频列表实现 数据准备 定义一个数组存储视频信息,每个视频对象包含标题、封面图、播放地址等属性。 data() { return { videos: [ {…