电商小程序店铺详情页:头部无限分类与筛选功能实现
电商小程序店铺详情页:头部无限分类与筛选功能实现
- 一、场景需求与技术选型
- 二、头部无限分类导航
- 三、筛选功能实现:Picker多列选择组件
一、场景需求与技术选型
在电商小程序生态中,店铺详情页作为用户浏览商品的核心流量入口,其交互效率与功能完整性直接影响商品转化率。传统店铺页常面临两大痛点:一方面,分类导航扩展性不足:固定分类栏无法适应动态更新的商品类目,用户需频繁切换页面;另一方面,筛选功能维度单一:仅支持单条件筛选,难以满足价格、销量、地域等多维度组合查询需求。这里聚焦头部无限分类导航栏与右侧多列筛选 Picker 组件的联动开发,基于uniapp跨端框架,实现以下核心能力:
- 动态分类加载:支持后台类目实时更新,自动生成 “全部” 分类前置显示
- 多维度筛选:集成排序规则(价格 / 销量)、地域范围等组合筛选条件
- 跨端适配:一次开发兼容微信小程序、H5、APP 等多端环境
二、头部无限分类导航
(1)布局结构与动态渲染
通过scroll-view
实现横向滚动的分类栏,动态加载后台返回的分类数据,并支持“全部”分类的前置显示。
<!-- 分类导航栏 -->
<scroll-view class="nav" scroll-x :style="{ width: (windowWidth - 30) + 'px' }"><view class='item line1' :class='item.categoryId == currentCategoryId ? "font-color" : ""'v-for="(item, index) in categoryList" :key="item.categoryId"@click='changeCategory(item.categoryName, item.categoryId)'>{{ item.categoryName }}</view>
</scroll-view>
通过getStoreCategoryList
接口获取分类列表,并在data
中拼接“全部”分类:
getStoreInfo() {getStoreCategoryList({ storeId: this.storeId }).then(data => {// 前置“全部”分类const categories = [{ categoryId: "", categoryName: "全部" }].concat(data.categories);this.$set(this, 'categoryList', categories);});
}