当前位置:首页 > uni-app

uniapp分类菜单

2026-02-06 01:59:34uni-app

实现UniApp分类菜单的方法

使用uni-ui的uni-list组件 在UniApp中可以通过uni-ui提供的组件快速实现分类菜单效果。安装uni-ui后,在pages.json中引入组件:

"easycom": {
  "autoscan": true,
  "custom": {
    "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
  }
}

页面模板中使用:

<uni-list>
  <uni-list-item title="食品分类" showArrow />
  <uni-list-item title="电子产品" showArrow />
  <uni-list-item title="服装配饰" showArrow>
    <template v-slot:footer>
      <uni-tag text="热销" type="error" />
    </template>
  </uni-list-item>
</uni-list>

自定义侧边栏分类 通过flex布局实现左右分栏的经典分类菜单:

uniapp分类菜单

<view class="menu-container">
  <scroll-view scroll-y class="left-menu">
    <view 
      v-for="(item,index) in categories" 
      :key="index"
      :class="['menu-item', activeIndex===index?'active':'']"
      @click="changeCategory(index)">
      {{item.name}}
    </view>
  </scroll-view>

  <scroll-view scroll-y class="right-content">
    <view v-for="sub in subCategories" :key="sub.id">
      <text class="sub-title">{{sub.name}}</text>
      <view class="goods-list">
        <!-- 商品项循环 -->
      </view>
    </view>
  </scroll-view>
</view>

对应CSS样式:

.menu-container {
  display: flex;
  height: 100vh;
}
.left-menu {
  width: 25%;
  background: #f8f8f8;
}
.menu-item {
  padding: 20rpx;
  text-align: center;
  &.active {
    color: #ff5500;
    background: #fff;
    border-left: 4rpx solid #ff5500;
  }
}
.right-content {
  width: 75%;
  padding: 20rpx;
}

数据绑定处理 在script部分处理分类数据交互:

uniapp分类菜单

export default {
  data() {
    return {
      categories: [
        {id:1, name:'生鲜食品'},
        {id:2, name:'数码家电'},
        {id:3, name:'美妆个护'}
      ],
      activeIndex: 0,
      subCategories: []
    }
  },
  methods: {
    changeCategory(index) {
      this.activeIndex = index
      // 模拟获取子分类
      this.subCategories = this.getSubCategories(this.categories[index].id)
    },
    getSubCategories(parentId) {
      // 实际项目中应调用接口获取数据
      const mockData = {
        1: [
          {id:11, name:'新鲜水果'},
          {id:12, name:'海鲜水产'}
        ],
        2: [
          {id:21, name:'手机通讯'},
          {id:22, name:'电脑配件'}
        ]
      }
      return mockData[parentId] || []
    }
  }
}

添加交互效果 增强用户体验的交互方案:

// 在onLoad中初始化数据
onLoad() {
  this.changeCategory(0)
  // 或者调用接口获取分类数据
  uni.request({
    url: 'https://api.example.com/categories',
    success: (res) => {
      this.categories = res.data
    }
  })
}

优化性能的方案 对于大量分类数据的情况:

// 使用计算属性避免重复计算
computed: {
  currentSubCategories() {
    return this.getSubCategories(this.categories[this.activeIndex]?.id)
  }
}

注意事项

  • 滚动区域需要设置固定高度
  • 小程序端scroll-view组件必须指定高度
  • 分类数据量大时可考虑分页加载
  • H5端注意处理滚动穿透问题

以上方案可根据实际项目需求进行组合或调整,uni-ui提供了丰富的组件可以快速构建分类界面,而自定义方案则具有更高的灵活性。

标签: 菜单uniapp
分享给朋友:

相关文章

vue实现左右菜单

vue实现左右菜单

实现左右菜单的基本思路 使用Vue实现左右菜单通常需要两个主要组件:左侧的导航菜单和右侧的内容区域。左侧菜单用于导航,右侧区域根据菜单选择动态展示内容。 创建左侧菜单组件 左侧菜单通常是一个列表,可…

uniapp 用法

uniapp 用法

uniapp 基本概念 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持编译到 iOS、Android、H5 及小程序等多端。其核心特点是“一次开发,多端发布”,通过条件编译实现平台差异…

uniapp 目录

uniapp 目录

uniapp 目录结构 uniapp 的目录结构遵循 Vue.js 项目的规范,同时包含一些特有的文件和目录。以下是典型的 uniapp 项目目录结构及其说明: project-name/ ├──…

uniapp 录像

uniapp 录像

uniapp 录像功能实现 在uniapp中实现录像功能可以通过调用uni-app的API或结合第三方插件完成。以下是常见的实现方法: 使用uni.chooseVideo方法 uni.choose…

uniapp 摇杆

uniapp 摇杆

uniapp 实现虚拟摇杆的方法 在uniapp中实现虚拟摇杆功能,通常需要结合canvas绘制和触摸事件监听。以下是具体实现方案: 基础摇杆实现 创建canvas画布 在template中添加c…

uniapp 销售日报

uniapp 销售日报

实现销售日报功能的步骤 数据收集与整理 销售日报需要收集每日销售数据,包括销售额、订单数量、商品类别等。数据可以从后端API获取或本地数据库存储。使用uni.request调用接口获取数据,确保数据结…