开发小程序(填坑之路,遇到一点就更新一点)

1.开发小程序发送请求时,报错不在以下合法列表中

在开发工具详情中设置:

请参考微信官方文档:关于小程序网络相关API说明

2.如果你需要权限验证(如登录后访问),小程序不像浏览器能帮你自动携带cookie信息,那么你需要自己写在将cookie写入请求hedear中,不然每次请求都通不过权限验证。

 wx.request({
      url: `${API_URL}/${type}`,
      data: Object.assign({}, params),
      method: 'POST',
      header: {
        'cookie': wx.getStorageSync('cookie')[0],
        'Content-Type': 'application/json',
        'content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
      },
      success: function(res){
        wx.hideLoading();
        if (res.header['Set-Cookie']) {
          //提取cookie,保存到storage中
          var setCookie = res.header['Set-Cookie'].replace(new RegExp('Path=/'), '').split(',')
          console.log('cookies:' + setCookie);
        }
    }
})

3.小程序下载文件保存本地,需要配置可信域名和https,并且下载的文件根本在手机获取不到。

 

4.打开页面过多导致内存占用过高。

navigateTo跳转打开新页面最多10层(没有APPID最多5层)。

wx.navigateTo(OBJECT)

保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
建议跳转5层后使用

wx.redirectTo(OBJECT)

关闭当前页面,跳转到应用内的某个页面,释放内存。
globalJump: function (url) {
    var pageLevel = getCurrentPages().length;
    if (typeof url == 'string') {
        url = url
    } else {
        url = url.currentTarget.dataset.url;
    }
    if (pageLevel < 4) {
        wx.navigateTo({
        url: url
    })
    } else {
        wx.redirectTo({
       url: url
        });
        }
    }

5. 页面滚到底部加载数据

不要使用scrollview。使用Page中的onReachBottom

  

6. 页面内使用setTimeIntervar跳转后定时器不会关闭导致报错

使用外部方法,判断页面是否已经跳转

7.用户授权(查看文档,更改了用法)

使用旧的方法在开发者工具会提示你使用button组件(已经上线会兼容旧的写法)

wx.getUserInfo(OBJECT)

注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="getUserInfo"></button> 引导用户主动进行授权操作

wx.authorize({scope: "scope.userInfo"}),无法弹出授权窗口,请使用 <button open-type="getUserInfo"></button> .

 彩蛋:需要在真机上测试可以点击预览也可以上传为开发版本。

-----原创文章,©版权所有,转载请注明标明出处:http://www.cnblogs.com/doinbean
原文地址:https://www.cnblogs.com/doinbean/p/9268476.html