欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小程序问题汇总

程序员文章站 2024-03-13 23:35:16
...
  • showToast在真机上闪现问题

问题描述:
微信小程序发送网络请求前,调用wx.showLoading()显示加载中,在回调success和fail中先调用wx.hideLoading()关闭加载提示框,再调用相应业务提示wx.showToast();开发工具中一切正常,真机测试时却一闪而过
原因阐述:
小程序中,showLoading和showToast调用的是同一个提示框,都受 wx.hideToast() 或者 wx.hideLoading() 的影响。
比如在真机上你的代码顺序为 wx.showLoading() =>wx.hideLoading() => wx.showToast() ;但是实际你看到的现象是 wx.showLoading() => wx.showToast() =>wx.hideLoading(),受到最后的 wx.hideLoading() 影响,toast 框闪烁一下就消失
解决方法:
将showToast放到队列最后。即设置settimeout,基本100毫秒就可以了。或者按需判断是否需要showLoading和hideLoading。

setTimeout(function(){
      wx.showToast({
        title: '操作成功'
      })
}, 100)
  • 打开分享页面回到首页,首页的callback已经被执行,导致首页空问题
    问题描述 + 原因阐述:
    因为小程序app.js和首页的js不知道谁先执行问题,所以在app.js中定义了首页的callback,首页只定义,不执行。但是打开分享页面时,已经执行了app.js,并且调用了callback方法,但是此时首页的callback还没有定义(因为首页还未被执行)。从分享页再返回首页,发现首页数据没有渲染上。
    解决方法:
    app.js中定义全局变量 shareTicket,在onLaunch中获取参数shareTicket并赋值给全局变量shareTicket。在首页中判断全局变量shareTicket是否为true,如果true,就执行callback函数。
app.js:
onLaunch: function (shareTicket) {
    console.log('onlaunch  app.js================')
    if(shareTicket) {
      this.globalData.shareTicket = shareTicket;
    }
     if (that.indexCallback) {
      that.indexCallback();
    }
  }
  首页.js:
  app.indexCallback = this.indexBack;   // 定义回调(在app.js里调用,即在登陆后调用)
  if(app.globalData.shareTicket) {   // 说明是从分享页面返回首页的
    this.indexBack();
  }
相关标签: js 微信小程序