当前位置:首页 > 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 数组记录展开状态:

vue实现分类列表

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 接收数据:

vue实现分类列表

// 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的艾特功能实现

Vue 的 @ 功能实现 在 Vue 中实现类似社交平台的 @ 功能,通常涉及输入框的监听、用户匹配和选择插入。以下是具体实现方法: 监听输入框内容 使用 v-model 绑定输入框内容,并通过 @…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…

vue实现分步

vue实现分步

Vue 实现分步功能 在 Vue 中实现分步功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 通过动态组件切换不同的步骤内容,结合 v-if 或 component 标签实现分步逻辑。…

vue实现插件

vue实现插件

Vue 插件实现方法 Vue 插件通常用于为 Vue 应用添加全局功能或共享功能。以下是实现 Vue 插件的核心步骤: 插件基本结构 Vue 插件需要暴露一个 install 方法,该方法接收 Vu…