当前位置:首页 > VUE

vue实现分类列表

2026-01-18 19:20:35VUE

Vue 实现分类列表的方法

数据结构设计

使用数组存储分类数据,每个分类对象包含 idname 等属性,子分类通过 children 字段嵌套。例如:

categories: [
  {
    id: 1,
    name: "电子产品",
    children: [
      { id: 101, name: "手机" },
      { id: 102, name: "笔记本电脑" }
    ]
  }
]

模板渲染

通过 v-for 递归渲染多级分类,结合 v-if 控制子分类的显示状态:

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

动态交互

添加展开/折叠功能,通过 data 中的 expandedIds 数组记录展开状态:

data() {
  return {
    expandedIds: []
  }
},
methods: {
  toggleExpand(id) {
    const index = this.expandedIds.indexOf(id);
    index === -1 
      ? this.expandedIds.push(id) 
      : this.expandedIds.splice(index, 1);
  }
}

样式优化

使用 CSS 增强视觉效果,如缩进表示层级关系:

ul {
  list-style-type: none;
  padding-left: 20px;
}
li {
  cursor: pointer;
  margin: 5px 0;
}

组件化拆分

将分类项拆分为独立组件 CategoryItem,通过 props 接收数据:

// CategoryItem.vue
props: ['category'],
template: `
  <li @click.stop="toggleExpand(category.id)">
    {{ category.name }}
    <ul v-if="isExpanded && category.children">
      <category-item 
        v-for="child in category.children" 
        :key="child.id" 
        :category="child"
      />
    </ul>
  </li>
`

数据加载

通过 API 异步获取分类数据,使用 axiosfetch

async created() {
  try {
    const res = await axios.get('/api/categories');
    this.categories = res.data;
  } catch (error) {
    console.error("加载分类失败", error);
  }
}

状态管理

对于大型应用,建议使用 Vuex 集中管理分类状态:

// store.js
state: {
  categories: []
},
mutations: {
  SET_CATEGORIES(state, data) {
    state.categories = data;
  }
}

vue实现分类列表

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

相关文章

vue实现anchor

vue实现anchor

Vue 实现 Anchor(锚点)功能 在 Vue 中实现锚点功能可以通过多种方式完成,以下是几种常见的方法: 使用 HTML 原生锚点 HTML 原生锚点是最简单的方式,通过 <a>…

vue实现文档

vue实现文档

Vue 实现文档的方法 在 Vue 中实现文档功能可以通过多种方式,包括使用富文本编辑器、Markdown 解析或直接渲染 HTML。以下是几种常见的实现方法。 使用富文本编辑器 富文本编辑器如 T…

vue实现全文检索

vue实现全文检索

Vue 实现全文检索的方法 客户端全文检索(适用于小型数据集) 使用 flexsearch 或 lunr.js 等轻量级库实现前端全文检索: import FlexSearch from 'fle…

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Parent…

vue实现多人视频

vue实现多人视频

实现多人视频通话的Vue方案 使用WebRTC技术结合Vue框架可以构建多人视频通话应用。以下是核心实现方法: 技术栈选择 Vue 2/3作为前端框架 WebRTC用于实时通信 Socket.…

前端多线程实现vue

前端多线程实现vue

前端多线程与Vue的结合 在Vue中实现多线程通常通过Web Worker技术完成。Web Worker允许在后台线程中运行脚本,避免阻塞主线程,适合处理计算密集型任务。 使用Web Worker…