微信小程序 常用生命周期勾子onLoad onShow等解釋


按官方文檔解釋,onLoad() 應該在第一次顯示頁面的時候調用,以后再次切換到該頁面時,不會再調用這個函數。如下圖:

實際調試中,進入一個頁面時,我發現頁面的 onLoad() 函數有時有調用,有時沒有。原因在下面的解釋中:

onLoad: 頁面加載。
一個頁面只會調用一次。
參數可以獲取wx.navigateTo和wx.redirectTo及中的 query。

onShow: 頁面顯示
每次打開頁面都會調用一次。

onReady: 頁面初次渲染完成
一個頁面只會調用一次,代表頁面已經准備妥當,可以和視圖層進行交互。
對界面的設置如wx.setNavigationBarTitle請在onReady之后設置。詳見生命周期

onHide: 頁面隱藏
當navigateTo或底部tab切換時調用。

onUnload: 頁面卸載
當redirectTo或navigateBack的時候調用。

因此,只要是使用了 redirectTo() 或 navigateBack(),再次進入頁面就會調用 onLoad()。

舉個例子,內容詳情頁面,如果除了系統默認的左上角的 < 返回,沒有提供更多的操作,用戶每次離開詳情頁面唯有點擊左上角的返回,必然調用 navigateBack(), 因此在這種情況下,用戶每次進入詳情頁面都要執行 onLoad()。

 

然后自己再BB總結一下
(1)onLoad
頁面加載時觸發,且只發生一次,有些數據實時性要求不高可以onlaod里面觸發對應的請求

(2)onReady
頁面初次渲染之后觸發(只是初次,下一次頁面渲染就沒他什么事),只觸發一次。你發送請求其實也可以把它當做onload畢竟也只是一次,但是你涉及到一些渲染的東西要注意了,設置頁面標題之類的要在他之后再用。

(3)onShow
定義是頁面顯示,切入前台觸發,用我的話來講就是這個頁面出現一次,他就被調用一次包括你前進后退到這個頁面。
(4)onHide
可能你看圖alive和active切換可能不太了解,但是你實際操作一下就知道,寫一個簡單得打印函數,在onHide里面調用,切換頁面的時候你就會發現該函數被調用。你可以通過這個Hide的詞來理解,這個頁面切換到別的頁面就會觸發。

待續。。。。

實際使用注意
onload在頁面加載的時候加載一次,而onShow就是切換到這個頁面就會加載一次。所以很多操作尤其是有數據交互請求后台的的function函數要注意,該放onload就放在onload里面,該放在onShow就放在onShow里面,別一個請求多次觸發然而沒什么實際意義,減輕后台壓力,查詢日志也方便,不會有一大堆相同的無意義請求干擾。有些東西請求拿到數據可以放在緩存里,像有些數據時效性不是很高可以拿緩存數據處理,時效性有點高的數據,可以定時一段時間刷新請求一下,你如商品列表的商品,你onShow一次太頻繁,不更新的話新的商品上新前台看不到,可以定時刷新請求一次獲取數據。

 

 

生命周期執行順序:https://www.jianshu.com/p/2e48f2468d5f


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM