收藏
回答

onUnload中调用wx.navigateBack导致小程序崩溃

问题模块
教程反馈

在onUnload周期函数中调用wx.navigateBack()方法返回的tab页面,会导致小程序在真机上面直接崩溃,在模拟器上的表现是调用了两次onShow(),

onUnload() {
        wx.navigateBack({
            delta: 2,
        })
    }

使用wx.switchTab才解决

onUnload() {
        wx.switchTab({
            url: '/pages/cart/index',
        })
    }

直接崩溃这个就不应该了 @官方

最后一次编辑于  2018-09-27  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

4 个回答

  • 娇华
    娇华
    2018-09-27

    你好,问题未复现。请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-09-27
    赞同
    回复 9
    • 牛利杰
      牛利杰
      2018-09-27

      我这里写了一个简单的demo也复现了,跳转方式使用的是

      <navigator url="/pages/address/index" hover-class="className">
          <view>to address</view>
      </navigator>


      2018-09-27
      回复
    • 娇华
      娇华
      2018-09-27回复牛利杰

      麻烦按照教程提供下代码片段,谢谢

      2018-09-27
      回复
    • 牛利杰
      牛利杰
      2018-09-27回复娇华

      代码片段:wechatide://minicode/U45EdKm8732y

      2018-09-27
      回复
    • 牛利杰
      牛利杰
      2018-09-27回复娇华

      index中的onShow执行了两次,(返回后打印了两次console)

      2018-09-27
      回复
    • 娇华
      娇华
      2018-09-27回复牛利杰

      好的,反馈已收到,我们这边看下

      2018-09-27
      回复
    查看更多(4)
  • 牛利杰
    牛利杰
    2018-09-27

    从个tabbar页面A跳转到非tabbar页面B,跳转方式如下:

    <navigator url="/pages/address/index" hover-class="className">
        <view>to address</view>
    </navigator>

    在页面B中的onUnload周期函数中调用wx.navigateBack:

    Page({
        onUnload() {
            wx.navigateBack({
                delta: 2
            });
        }
    });

    然后页面A的onShow周期函数会执行两次:

    onShow: function() { // 显示/切入前台时触发
            console.log(this.route);
        },


    2018-09-27
    赞同
    回复
  • 韬々
    韬々
    2018-09-28

    你好 请问这个崩溃是小程序 ,还是整个微信客户端?

    2018-09-28
    赞同
    回复 1
    • 牛利杰
      牛利杰
      2018-10-11

       是小程序崩溃

      2018-10-11
      回复
  • 🍀阿晨宝贝
    🍀阿晨宝贝
    08-19

    请问楼主,你这个问题解决了吗? 首先我提个建议:onUnload() 这个函数已经有一层返回到上一页的动作,然后你再用wx.navigateBack的话就会以上一页 为基础返回到某一个页面,然后写的delta是2的话是不是多返回了一层,而你那个页面又是tab页,tab页一般是在页面栈的0位置上的,没有再上一层了,不知道我的理解对不。 不知道官方支持这种写法不?

    08-19
    赞同
    回复