小程序的生命周期 base 官方文檔

參讀過小程序文檔的同學應該會發(fā)現(xiàn)小程序的設計和VUE有諸多相似之處,比如小程序的數(shù)據(jù)綁定方式、渲染方式和生命周期有諸多相似之處。然而相似歸相似,由于小程序的應用場景繁多且情況不單一,導致小程序的生命周期比VUE的生命周期情況更為復雜。所以我們這篇文章就談下我們小程序的生命周期。
我們知道小程序的頁面分為兩種 : tab頁面 和 非tab頁面 。這里這兩種頁面的情況較為獨立,沒有太大的穿插性,所以我們可以分開記憶,這點對我們來說是非常棒的。否則錯綜復雜,云里霧里。好了,我們下面就開始進入正題,本文的理解都基于官方文檔的介紹,如有錯誤,請大佬糾正在下,感激不盡。
情況一,非tab頁面
在非tab頁面中,有幾種跳轉情況,這里請看下面官方的截圖


image.png

我們從官方文檔介紹這里開始分析一波。
當首次進入小程序的時候,會走'兩套流程'.第一個流程就是我們的入口 app.js,第二個就是我們的首頁的生命周期(onload,onshow....)。
我們頁面路由的變動方式有五種
方式一
wx.navigateTo : 當頁面使用小程序api的wx.navigateTo跳轉到其他頁面的時候(A to B),A會執(zhí)行鉤子函數(shù)onHide,然后B頁面開始執(zhí)行加載(onLoad)和顯示(onShow)。注意:A只是hide了,并沒有被卸載(onUnload),所以你會發(fā)現(xiàn),跳轉到B頁面后,左上角還有一個物理返回鍵在那,就像下面


image.png

這里又有一點劇透請注意了: 物理返回鍵其實就是調用了我們的路由Api中的wx.navigateBack。執(zhí)行這個api,當前打開中的頁面會被卸載,原來的頁面會被show,但是不會再去執(zhí)行onLoad了!!!
wx.navigateBack其實就是從頁面棧中去找你要的目標頁面,當找到后,原來已經(jīng)打開的頁面都會被退出(頁面出棧),直到返回到目標頁面為止,單后只會執(zhí)行目標頁面的onShow。其實說到這里,有一個結論:只要在頁面是棧中的,并且你執(zhí)行的是'返回頁面(wx.navigateBack)'的方式回到目標頁面,就只會讓目標頁面執(zhí)行onShow。因為他是返回原來的歷史記錄去找,而不是新壓一個頁面入棧。
方式二
wx.redirectTo : 這個方式叫頁面重定向,他其實就類似于我們url的replace方法,將原來的頁面出棧(onUnload),替換成我們的目標頁面。不要誤會了,這個替換其實也就是將新頁面壓入頁面棧中。因此新頁面會去執(zhí)行onLoad以及onShow。這個方法比較好理解,我們不多做贅述。
方式三

wx.navigateBack : 在頁面棧中去找目標頁面,在找到后,就讓頁面棧里的頁面不斷出棧,直到返回到目標頁面為止。目標頁面執(zhí)行onShow。
情況四
wx.reLaunch: 頁面全部出棧,只留下新頁面(簡單粗暴)。
----------------------------------------------以上都是非tab頁面的路由更替情況
這里開始,開始討論和tab頁面路由更替有關的情況,上面的情況都是非tab頁面的,有tab頁面參與的我們需要單獨去記憶,因為這樣好記。
請看下面的圖(沒錯,我就是官網(wǎng)的搬運工)


image.png

上面圖中的紅色文字是根據(jù)官網(wǎng)的介紹進行翻譯的,這里我做幾點解釋
相扣順序 : A頁面打開了B頁面 ,我管這種頁面關系叫相扣順序的兩個頁面
A框和B框表示 tab頁面A和tab頁面B,沒有框的C和D就表示非tab頁面C和非tab頁面D

----------------------------------以上為全文內容,如有錯誤請指正,如果覺得還行請來個贊,謝謝哈

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容