【小程序项目开发-- 京东商城】uni-app之分类导航区域

简介: 【小程序项目开发-- 京东商城】uni-app之分类导航区域

专栏内容

✨-- 京东商城uni-app项目搭建 --✨

✨-- 京东商城uni-app 配置tabBar & 窗口样式 --✨

✨-- 京东商城uni-app开发之分包配置 --✨

✨-- 京东商城uni-app开发之轮播图 --✨

✨-- 京东商城uni-app之分类导航区域 --✨

✨-- 京东商城uni-app 首页楼层商品 --✨

✨-- 京东商城uni-app 商品分类页面(上) --✨

✨-- 京东商城uni-app 商品分类页面(下) --✨

✨-- 京东商城uni-app之自定义搜索组件(上) --✨

✨-- 京东商城uni-app之自定义搜索组件(中) --✨

文章目录

实现目标:

图片.png

一、封装uni.$showMsg()

  • 开发场景

在项目中,我们经常需要多次调取数据,而当数据请求失败之后,经常需要调用 uni.showToast({ /* 配置对象 */ }) 方法来提示用户。此时,可以在全局封装一个 uni.$showMsg() 方法,来简化 uni.showToast() 方法的调用。

具体的改造步骤如下:

在main.js 项目入口文件中,为uni挂载一个$showMsg() 方法,$表示自定义挂载函数

在函数上是赋值参数用=, 在showToast函数内传的是一个字典,里面赋值是:

// 挂载 uni请求数据消息提示 方法 (默认)
uni.$showMsg = function(title = '数据加载错误...', duration = 1500,icon = 'fail' ) {
  uni.showToast({
    title,
    duration,
    icon
  })
}

将封装好的代码 用于home页面,

 onLoad() {
      // 调取方法,获取轮播图数据
      this.getSwiperList()
    },
    methods: {
      async getSwiperList() {
        // '/' 根目录即为在main.js的文件配置的 baseUrl 
        const res = await uni.$http.get('/api/public/v1/home/swiperdata')
        // 数据调取失败
        if (res.data.meta.status != 200) return uni.$showMsg()
        // 将调用的数据 赋值
        this.swiperList = res.data.message
        uni.$showMsg('数据请求成功!', 'success')
      }
    }

二、 响应数据参考

{
    "message": [
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner1.png",
            "open_type": "navigate",
            "goods_id": 129,
            "navigator_url": "/pages/goods_detail/main?goods_id=129"
        },
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner2.png",
            "open_type": "navigate",
            "goods_id": 395,
            "navigator_url": "/pages/goods_detail/main?goods_id=395"
        },
        {
            "image_src": "https://www.zhengzhicheng.cn/pyg/banner3.png",
            "open_type": "navigate",
            "goods_id": 38,
            "navigator_url": "/pages/goods_detail/main?goods_id=38"
        }
    ],
    "meta": { "msg": "获取成功", "status": 200 }
}

三、获取分类导航数据

  • 在data节点定义navList 数据
   data() {
      return {
        // 轮播图数组
        swiperList: [],
        //分类导航数组
        navList: []
      };
  • 在method 定义调取数据函数getNavList()
async getNavList(){
        // 调取数据
        const res =  await uni.$http.get('/api/public/v1/home/catitems')
        // 如果调取失败 返回错误信息并退出
        if(res.data.meta.status != 200 ) return uni.$showMsg()
        // 赋值
        this.navList =  res.data.message
        uni.$showMsg('数据加载成功','success')
      }
}
  • 在生命周期函数onload调用函数getNavList()
 onLoad() {
    // 调取方法,获取轮播图数据
    this.getSwiperList(),
    // 获取分类导航数据
    this.getNavList()
  },

调取成功

图片.png

四、分类导航UI结构

在需要循环标签的属性节点需要在前面加上 :提示后面的是变量或变量表达式

3.1大坑勿踩!!!

  • 大坑一:使用 vue-for 动态循环轮播图数组,循环动态绑定需要标签属性节点前都要加上 ::v-bind:的缩写,即动态绑定数据,后面的是变量或者变量表达式,如果没有冒号的则为字符串,此时循环无法正常显示效果、)
  • 大坑二:在UI渲染 template模板一定需要一个 标签 view 将全部内容包裹起来,不然会报如下错误:
    Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <style>, as they will not be parsed.
    这是因为在模板中必须要有一个 根节点,以这个根节点作为入口,递归遍历各个树叶(子标签)图片.png
<!-- 模板  -->
<template>
  <view>
    <!-- 渲染轮播图UI结构 -->
    <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
      <!-- 类似python for i,j in object 得到对应项目i以及索引j -->
      <swiper-item v-for="(item,i) in swiperList" :key="i">
        <navigator class="swiper-item" :url="'/subpackages/goods_detail/goods_detail?good_id=' + item.goods_id">
          <image :src="item.image_src"></image>
        </navigator>
      </swiper-item>
    </swiper>
  <view class="nav_list">
    <view class="nav_item" v-for="(item,index) in navList" :key="index">
      <image :src="item.image_src" class="nav_image"></image>
    </view>
  </view>
  </view>
</template>
<!-- 样式 -->
  <style lang="scss">
    .nav_list {
      display: flex;
    }
    .nav_item{
      display: flex;
      width: 25%;
      height: 200rpx;
      justify-content: center;
      align-items: center;
    }
    .nav_image {
      width: 150rpx;
      height:150rpx;
    }
  </style>

开发中可将页面复制到分栏,进行样式与结构开发

图片.png

效果:

图片.png

五、点击分类选项跳转到分类页面

前情提要:

监听DOM(document object model)事件在vue中使用v-on:, 而在小程序开发工具中监听事件则是 bind[’状态‘] ,如:bindtap,但是由于绑定事件v-on:经常需要被使用,所以使用@作为v-on:的缩写(前文提到的v-bind:也是一样:缩小,这是动态渲染数据,在小程序开发工具则是以mustache语法{{}}渲染数据的

由于需要对其选项判断是否为分类选项,所以不能简单的讲view改为navigator,需要监听点击事件,做更复杂的操作。

//方法
 methods: {
      // 分类导航-- 分类
      navClickHandelr(item){
        if (item.name === '分类') {
          uni.switchTab({
            url: "/pages/cate/cate"
          })
        }
      },
<!--UI结构--!>
 <view class="nav_list">
 <!--传参item--!>
    <view class="nav_item" v-for="(item,index) in navList" :key="index" v-on:click="navClickHandelr(item)">
      <image :src="item.image_src" class="nav_image"></image>
    </view>
  </view>

效果:

11.gif

成功实现!🥳

✨谢谢你的阅读,您的点赞和收藏就是我创造的最大动力!



相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
679 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
740 1
|
8天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
39 8
|
4天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
11天前
|
缓存 移动开发 小程序
uni-vue3-wetrip自创跨三端(H5+小程序+App)酒店预订app系统模板
vue3-uni-wetrip原创基于vite5+vue3+uniapp+pinia2+uni-ui等技术开发的仿去哪儿/携程预约酒店客房app系统。实现首页酒店展示、预订搜索、列表/详情、订单、聊天消息、我的等模块。支持编译H5+小程序+App端。
47 8
|
26天前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
55 3
家政服务小程序APP开发,做好上门家政最快的方法是什么?
在家政服务领域,打造成功的平台并非易事。本文分享了三个关键步骤:避免初期盲目投入、采用低成本获客方式、建立有效的阿姨筛选机制。遵循这些方法,可助你避开常见陷阱,成为行业头部平台。
|
1月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
333 3
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
239 1