当前位置:首页 > 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实现atm

vue实现atm

Vue实现ATM机模拟功能 使用Vue.js实现ATM机模拟功能需要结合组件化开发、状态管理以及用户交互逻辑。以下是关键实现步骤: 核心组件结构 创建以下Vue组件构建ATM界面: Car…

vue手动实现弹窗

vue手动实现弹窗

实现弹窗组件的基本结构 在Vue中手动实现弹窗组件,需要创建一个独立的弹窗组件,并通过props控制其显示与隐藏。弹窗组件通常包含遮罩层、内容区域和关闭按钮。 <template>…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播可以通过结合v-for指令和动态样式绑定完成。核心是维护一个当前显示卡片的索引,通过CSS过渡效果实现平滑切换。 基础实现步骤 模板部分 使用v-fo…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue调用接口实现退出

vue调用接口实现退出

实现Vue退出功能的步骤 在Vue中调用接口实现退出功能通常需要与后端API交互,以下是实现方法: 前端实现 创建退出方法,调用后端API接口: methods: { logout() {…