微信小程序——断网重新加载的问题

来源:互联网 发布:渝商创投网络借贷 编辑:程序博客网 时间:2024/04/28 11:09

微信小程序——断网重新加载的问题

这几天一直在修改微信小程序的bug,很是头疼,由于以前没怎么接触过,导致bug修改进度很慢,尤其是今天这个断网重新加载的问题,改了一天,也没弄出个所以然。
由于微信小程序自带的API中缺少刷新的,所以网上查阅资料,有关的解法如下,亲测可以执行。

可以封装了一下wx.request来判断是否断网,及断网后记录本次请求

代码如下:

 function wxRequest (obj, cb, page, type) {        var isOne = true        var cachFn = function () {            wx.request({                  url: obj.url,                  data: obj.data || {},                  method: obj.method || 'GET',                  success: function (res) {                    cb.call(page, res)                    if (!page.data.isNet) {                        page.setData({                            isNet: true                        })                    }                  },                  // fail执行时当断网处理                  fail: function () {                      // 防止fail 有时会执行两次,影响渲染                      if (!isOne) {                          return                      }                    page.setData({                        isNet: false,                        isRequested: false                    })                    // 记录本次请求,加载时,执行page实例的reloadFn即可                      page.reloadFn = wxRequest(obj, cb, page, 1)                      isOne = false                  }            })        }        if (type) {            page.isRequested = true        }        return type ? cachFn : cachFn()    }

应用:

 let data = {      url: '',      data: {},      method: ''    }    wxTools.wxRequest(data, (res) => {        // 数据渲染        this.setData({})    }, this)

其实,断网重新加载完全可以换个思路去解决,比如,当网络断开时,你可以给用户一个提示,告诉用户网络连接有问题,重新连接之后,让用户自己去点击加载的按钮,也就相当于重新加载了。

还有一个近期解决的bug,那就是当wxml或者html中,你想隐藏一个标签A(不在页面中显示,并且不占用页面的空间),但是A标签上有你js文件想要获取的内容,这时,你就可以将你想隐藏的A标签包裹在另一个标签中,然后将A标签父元素的 css 样式设置为{overflow:hidden,height:0}

阅读全文
1 0