1. 程式人生 > >微信小程式同一個頁面壓入歷史棧兩次,返回第二次頁面沒資料

微信小程式同一個頁面壓入歷史棧兩次,返回第二次頁面沒資料

微信小程式同一個頁面壓入歷史棧兩次,返回第二次頁面沒資料

問題描述

最近專案中遇到一個場景,頁面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 中,這樣即使再次進入會重新賦值,然後返回也不會影響資料為空。