码迷,mamicode.com
首页 > 微信 > 详细

微信小程序开发小结

时间:2019-02-28 16:31:49      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:数据量   比较   设置   type   参数   如何   解决   使用   button   

  1、点击按钮分享功能:

  使用Button组件,设置open-type="share",然后在js文件的onShareAppMessage方法中设置如下:

onShareAppMessage: function (options) {
let shareObj = {}
if (options.from == "button") {
    //设置title、path、imageUrl
   shareObj.title = ‘‘
   shareObj.path = ‘‘
   shareObj.imageUrl = ‘‘
}
return shareObj
}

 

  2、Navigator组件中的子元素也绑定了事件,点击子元素触发时,页面会跳转。

  解决:子元素绑定事件时不要用bindtap,改用catchtap

 

  3、获取当前页面的url(完整路径)。写成工具函数如下:

function getCurrentPageUrlWithArgs(){
    var pages = getCurrentPages()    //获取加载的页面
    var currentPage = pages[pages.length-1]    //获取当前页面的对象
    var url = currentPage.route    //当前页面url
    var options = currentPage.options    //如果要获取url中所带的参数可以查看options
    var urlWithArgs = ‘‘
    //拼接url的参数
    if (options) {
      urlWithArgs = url + ‘?‘
      for(var key in options){
        var value = options[key]
        urlWithArgs += key + ‘=‘ + value + ‘&‘
      }
    } else {
      urlWithArgs = url + ‘ ‘
    }
    urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length-1)
    return urlWithArgs
}

 

  4、小程序分页数据限制:

  常规的做法是,将每次新获取的数据拼接到当前数组中去。这样,对于数据量较小的情况下是没什么问题的,但是如果数据量比较多,很容易就超出1024kb的限制。

  那么该如何缓解这种问题呢?这里参照了百度小程序的解决方案,就是使用二维数组来解决。

this.setData({
  [‘hotTodayList[‘ + curPage + ‘]‘]: res.list,  // curPage表示二维数组的下标,如果分页是从1开始,则curPage等于当前页减去1,如果分页从0开始,则curPage就等于当前页数
  pageNum: this.data.pageNum + 1,
  totalPage: totalPage,
})

  在页面渲染的时候,就要使用两个for循环来渲染数据了。 

<block wx:for="{{hotTodayList}}" wx:for-item="arrItem" wx:for-index="arrIndex">
  <block wx:for="{{arrItem}}" wx:for-item="item" wx:key="index" wx:for-index="index">
    // 需要渲染的页面结构
  </block>
</block>

  注意:在刷新的时候要清空原数据,防止新数据与原数据冲突,如本例,直接hotTodayList = []就行了。

  这虽然能解决在分页数较多,单次设置数据较大的问题。但是如果单页中后台一次性返回的数据大于1024kb时,依然会出现问题的,特别是有商品sku这种情况下,是很容易碰到的,所以还是需要与后端协商一下,尽量不要返回不必要的数据。

 

  5、小程序遇到了偶发性微信加密数据解密失败的问题:

  在这一步的开发中,一定要按照这样的顺序 1. 小程序请求login,拿到code  ;2.然后小程序调用getuserinfo接口拿到encryptedData,iv,还有之前的code,然后传给服务端;4.服务端拿到客户端的encryptedData,vi还有sessionKey去解密得到 unionId等用户信息;不然就会出现这样的问题,这种情况偶然出现的原因就是,在服务端还未去获取sessionKey的时候就去调用了getuserinfo,有时候会比服务端快,有时候会比服务端慢,所以就出现了偶然性。

 

  6、小程序上线后打开出现了调试模式:

  这是因为在开发版本打开了调试模式,然后再用线上版本也会有。在开发版中关闭调试模式就行。好在这个只有自己有,用户是没有的。

 

  7、用户长按二维码进入小程序后,获取二维码中的参数失败:

    技术图片

    以上是官方文档给的说明。之所以失败是因为二维码只认scene字段,也就是用options.scene可以获取,二维码中的这个参数不能随便传,否则虽然能进入到小程序,但是无法获取到想要的参数。

微信小程序开发小结

标签:数据量   比较   设置   type   参数   如何   解决   使用   button   

原文地址:https://www.cnblogs.com/jf-67/p/10303099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!