onUnload中调用wx.navigateBack导致小程序崩溃
发布于 6 年前 作者 weigao 18280 次浏览 来自 问答

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

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

使用wx.switchTab才解决

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

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

5 回复

请问这个问题现在解决了吗?我也遇到了

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

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

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

从个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);
    },
回到顶部