【微信小程式】頁面生命週期onShow,onLoad,onReady的差別
皮五辣子發表於2024-07-05
1. 觸發時機和條件
- onLoad:
- 觸發時機:頁面載入時觸發,即當頁面被建立並準備載入時。
- 觸發條件:首次開啟頁面時呼叫,之後頁面再次開啟(如透過頁面跳轉返回)則不會再次觸發。
- 作用:通常用於頁面的資料初始化,如從伺服器獲取資料、設定頁面的初始狀態等。
- onShow:
- 觸發時機:頁面顯示時觸發,即頁面每次出現在螢幕上時。
- 觸發條件:每次開啟頁面(包括首次開啟和從其他頁面返回)都會呼叫。
- 作用:常用於頁面顯示時的資料更新、頁面重新整理、使用者資訊獲取、資料統計和埋點等。
- onReady:
- 觸發時機:頁面初次渲染完成時觸發,即頁面的DOM結構已經渲染完成,但不一定所有的非同步資料都已載入。
- 觸發條件:每個頁面在其生命週期內只會呼叫一次
onReady
。
- 作用:用於在頁面初次渲染完成後執行某些操作,如操作DOM、設定定時器、呼叫API等。
2. 使用場景
- onLoad:適合用於資料初始化、頁面狀態設定等需要在頁面載入時完成的操作。
- onShow:適合用於頁面顯示時的資料更新、頁面重新整理、使用者資訊獲取等需要在頁面每次顯示時進行的操作。
- onReady:適合用於頁面初次渲染完成後的DOM操作、定時器設定等。
3. 注意事項
- 在
onLoad
中,可以透過引數options
獲取頁面跳轉時傳遞的引數。
onShow
和onLoad
在觸發時機上有明顯的區別,前者在頁面每次顯示時都會觸發,後者只在頁面首次載入時觸發。
onReady
確保了在頁面初次渲染完成後執行程式碼,但需要注意非同步資料可能還未載入完成。