微信小程序同一个页面压入历史栈两次,返回第二次页面没数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yang450712123/article/details/82253499

微信小程序同一个页面压入历史栈两次,返回第二次页面没数据

问题描述

最近项目中遇到一个场景,页面A(A1) => B => A(A2), 然后返回时,先从页面返回时,从A2 => B => A1, A2 回退时,会触发 A2 的 onUnload(onUnload 事件中执行了一些数据重置为空的函数)事件,然后回退到 A1时,发现 A 页面的数据为空,A1 此时不会触发 onLoad(我们的页面数据赋值在 onLoad) 事件,会触发 onShow 事件。此时,会出现 A1 页面空白,数据为空。

解决方案

通过问题描述的分析,得到这种情况的原因是:
当历史栈里有两个 A(A1,A2)时,先从 A2 返回,会清空 A 页面的数据,而返回到 A1 时,没有触发 onLoad 事件重新赋值,所以造成 A1 页面数据空白。
以下是我们的解决方案:
我们的项目使用的是 mpvue,用 vuex 管理,在第一次进入 A1 时,onLoad 钩子里把值存到 vuex 中,这样即使再次进入会重新赋值,然后返回也不会影响数据为空。

猜你喜欢

转载自blog.csdn.net/yang450712123/article/details/82253499