文章出處:https://blog.csdn.net/qq_29712995/article/details/79784222
在我看來小程序的生命周期雖然簡單,但是他滲透了小程序開發的整個過程,對於小程序開發人員來說這是十分重要的,我們應該深入理解他。首先我們來看下小程序開發文檔中的生命周期圖。
以下是官網給出的生命周期狀態圖
為了更好地理解小程序生命周期我們也需要知道小程序路由。
小程序路由
小程序以棧的形式維護頁面,當路由發生變化時頁面棧的表現如下:
實際操作
1、頁面A入棧
注:onReady是在onShow之后觸發;
onReady和onLoad一樣只在頁面入棧時渲染一次;
2、頁面A->頁面B(通過redirectTo跳轉,A頁面出棧,B頁面入棧)
A頁面觸發onUnload(注意,此處沒有觸發onHide);
B頁面觸發onLoad、onShow、onReady;
3、頁面A->頁面B(通過navigationTo跳轉,A頁面不出棧,B頁面入棧)
A頁面觸發onHide;
B頁面觸發onLoad、onShow、onReady;
4、頁面A->頁面B,當頁面B回到頁面A(通過navigationBack返回,下面是:頁面B回到頁面A時觸發的)
B頁面觸發onUnload;
A頁面觸發onShow;
5、頁面A出棧
頁面A觸發onUnload;
6、頁面A->頁面B->頁面A(通過navigationTo跳轉,下面是:頁面B跳到頁面A時觸發的)
B頁面觸發onHide;
A頁面觸發onLoad、onShow、onReady;
注:此時棧為ABA三個頁面,第一個頁面A沒有出棧。
用文字來描述的話大家可能覺得亂亂的,下面我們用表格來呈現它
注:以下中:跳到指navigateTo,重定向指redirectTo,返回指navigateBack。
在這里我沒有把switchTab和reLaunch的例子列舉出來,因為原理都一樣,大家可以先去看下文章上面的小程序路由那張圖,然后查找這些操作對應的出棧和入棧情況便可以知道相應觸發的生命周期。