mpvue开发微信小程序踩坑

  1. 在列表page点击进入详情页面时,用mounted()方法 去获取数据去展示数据,但是有些数据需要在onShow()方法中调用,因为mpvue框架问题,所以在返回的时候如果不将data中定义的数据清除的话,再次点击进入详情页面的话,还是会显示第一次进入详情页的数据,可以在methods中写一个初始化数据的方法
  initData() {
    this.videoFlag = false //是否显示视频
    this.classDes = {}
    this.promotionData = {}
    this.activeIndex = 0
    this.classDetailData = null
    this.classId = null
    this.isShow = false
    this.networkType = 'wifi'
    this.classVideoData = {}
 }

需要在onUnload()函数中调用这个方法,这样才能保证下次进来会展示新的数据,这个问题只在mpvue框架会出现,在原生小程序中是不会出现的。mpvue的子元素生命周期很混乱,如果我们在频繁的更换页面详情得时候,会出现子元素数据不变缓存的问题,我们需要在onHide()中将传递给子元素的数据重置,然后在onShow()的时候在给赋值就可以了。
2. 在请求数据的时候,我们选用flyio.js来进行数据的请求获取,所以我们会对请求方法进行二次封装,在封装的时候我们会加入一个微信原生提供的loading方法(wx.showLoading())方法用于在请求接口时的等待显示,使用户体验会更好。这样做在其他请求页面请求接口还好,但是在列表页面下拉加载时,


onPullDownRefresh() {
  this.refreshClassList();
},
refreshClassList() {
  wx.request({
    success: res => {
      ...
      wx.hideLoading();
      wx.stopPullDownRefresh();
    }  
  })
}

由于小程序提供下拉刷新方法,所以使用原生的下拉刷新方法,但是下拉回弹的动画总是会过度回弹,导致顶部元素被遮挡,同时多次下拉会有几率触发页面卡下来的bug,通过查找,确认是两个loading共用导致,小程序的下拉刷新有顶部动画效果,所以下拉刷新时不需要做wx.showLoading的提示,最终在封装得请求中去掉了wx.showLoading()方法,在列表页面使用微信自带的下拉loading。
3. 微信小程序在最新版将不再提供默认弹出授权窗口,需要用户去点击触发才能弹出授权窗口,经过商讨,我们决定在添加一个授权页面,在app.vue的onLaunch()方法中判断是否授权,如果没有授权将跳到授权页面,点击按钮进行授权,反之,则继续执行正常操作,这个地方还有一个坑,就是分享出去的页面逻辑里面不要再去判断授权,要不然会弹出两个授权页面。
4. 我们在写组件的时候,往往会用到slot插槽,但是在嵌套组件中使用slot插槽无法正常显示渲染,最终在mpvue的Issues中找到解决办法,要在mpvue@1.0.11,mpvue-template-compiler@1.0.11,mpvue-loader@1.0.13的环境下嵌套组件的slot才可以正常使用。目前已降级到指定版本,暂时没有发现bug。
5. 在项目中有用到城市联级选择的情景,当时选用mpvue-picker插件来开发,因为联动需要循环,第一级或者第二级改变都需要遍历一遍数组,省市可能数据量比较大,然后就出现了卡顿,所以弃用,然后又找到了mpvue-citypicker,这个插件将citypicker单独出来,改变了城市数据结构,没有出现卡顿现象。但是这个插件里面的城市列表跟公司的城市不对应,返回的数据也不是我们想要的。所以我把它的原始数据给替换成了公司所需要的城市数据,并返回业务所需要的数据。考虑到这个小程序是多人开发,然后把这个插件整合了一下,发到了npm包上,供大家下载使用,npm包名为mpvue-citypicker-ht
6. 小程序分享朋友圈功能,首先请求后端生成的小程序码(生成小程序码需要access token,后端生成比较方便),要使用小程序码的图片路径,如果直接使用的话使用canvas是画不上去的,必须要通过wx.downl

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值