【微信小程式】頁面生命週期onShow,onLoad,onReady的差別

皮五辣子發表於2024-07-05

1. 觸發時機和條件

  • onLoad:
    • 觸發時機:頁面載入時觸發,即當頁面被建立並準備載入時。
    • 觸發條件:首次開啟頁面時呼叫,之後頁面再次開啟(如透過頁面跳轉返回)則不會再次觸發。
    • 作用:通常用於頁面的資料初始化,如從伺服器獲取資料、設定頁面的初始狀態等。
  • onShow:
    • 觸發時機:頁面顯示時觸發,即頁面每次出現在螢幕上時。
    • 觸發條件:每次開啟頁面(包括首次開啟和從其他頁面返回)都會呼叫。
    • 作用:常用於頁面顯示時的資料更新、頁面重新整理、使用者資訊獲取、資料統計和埋點等。
  • onReady:
    • 觸發時機:頁面初次渲染完成時觸發,即頁面的DOM結構已經渲染完成,但不一定所有的非同步資料都已載入。
    • 觸發條件:每個頁面在其生命週期內只會呼叫一次onReady
    • 作用:用於在頁面初次渲染完成後執行某些操作,如操作DOM、設定定時器、呼叫API等。

2. 使用場景

  • onLoad:適合用於資料初始化、頁面狀態設定等需要在頁面載入時完成的操作。
  • onShow:適合用於頁面顯示時的資料更新、頁面重新整理、使用者資訊獲取等需要在頁面每次顯示時進行的操作。
  • onReady:適合用於頁面初次渲染完成後的DOM操作、定時器設定等。

3. 注意事項

  • onLoad中,可以透過引數options獲取頁面跳轉時傳遞的引數。
  • onShowonLoad在觸發時機上有明顯的區別,前者在頁面每次顯示時都會觸發,後者只在頁面首次載入時觸發。
  • onReady確保了在頁面初次渲染完成後執行程式碼,但需要注意非同步資料可能還未載入完成。

相關文章