wx.reLaunch 不会触发其它标签页的 onUnload
发布于 5 年前 作者 shiwei 10564 次浏览 来自 问答

当某个页面调用了 wx.reLaunch(),文档里说的是关闭其它所有页面并打开指定的页面,所以理论上其它所有页面被关闭时应该都会触发 onUnload(),可实际上 reLaunch 关闭他们时并没有调用 onUnload,仅调用了当前页面栈中的 onUnload,因为其它标签页不在 getCurrentPages() 返回的页面栈中,所以就不会被调用。

假如我在一个页面 onLaunch() 中往全局注册了或写入了某些东西,在 onUnload() 卸载这些写入的东西,一旦多个标签页某个页面调用了 wx.reLaunch(),页面逻辑就会出问题。

所以这里是不是应该调整为 wx.reLaunch() 不只是触发打开 getCurrentPages() 返回的页面 onUnload(),也应该在关闭其它标签页时调用他们的 onUnload()

2 回复

这里确实是有这问题,reLaunch只对页面栈中的页面进行了unload。后续我们会尝试修复这个bug的,感谢反馈。

还有问题,wx.reLaunch() 不仅没有调用其它标签页的 onUnload(),而且还没有触发那些页面里所使用组件的 detached()。页面效果稍复杂,就会出现各种问题。

回到顶部