ArkTS 頁面和自定義元件生命週期

亲爱的老王哥發表於2024-08-18

頁面生命週期,即被@Entry裝飾的元件生命週期,提供以下生命週期介面:

  • onPageShow:頁面每次顯示時觸發一次,包括路由過程、應用進入前臺等場景。

  • onPageHide:頁面每次隱藏時觸發一次,包括路由過程、應用進入後臺等場景。

  • onBackPress:當使用者點選返回按鈕時觸發。

這三個是頁面會觸發的事件,當開啟元件時不會觸發

  只有被@Entry裝飾的元件才可以呼叫頁面的生命週期,

理解方式
@Entry
= 頁面
@Component = 元件

元件生命週期,即一般用@Component裝飾的自定義元件的生命週期,提供以下生命週期介面:

  • aboutToAppear:元件即將出現時回撥該介面,具體時機為在建立自定義元件的新例項後,在執行其build()函式之前執行。

  • onDidBuild:元件build()函式執行完成之後回撥該介面,不建議在onDidBuild函式中更改狀態變數、使用animateTo等功能,這可能會導致不穩定的UI表現。

  • aboutToDisappear:aboutToDisappear函式在自定義元件析構銷燬之前執行。不允許在aboutToDisappear函式中改變狀態變數,特別是@Link變數的修改可能會導致應用程式行為不穩定。

  • aboutToDisappear 就是元件銷燬之前執行
  ForEach(item.Products, (product: ProductDto, index) => {
               Row() {

                 if(product.Name = "1234"){
                   //假設Name改成4321,條件不滿足時則會銷燬這個元件,並且在銷燬之前執行 aboutToDisappear
                   ProductItem({ Product:product })
                 }
               }
      })

這三個是所有頁面都會執行的事件

自定義元件的建立和渲染流程

  1. 自定義元件的建立:自定義元件的例項由ArkUI框架建立。

  2. 初始化自定義元件的成員變數:透過本地預設值或者構造方法傳遞引數來初始化自定義元件的成員變數,初始化順序為成員變數的定義順序。

  3. 如果開發者定義了aboutToAppear,則執行aboutToAppear方法。

  4. 在首次渲染的時候,執行build方法渲染系統元件,如果子元件為自定義元件,則建立自定義元件的例項。在首次渲染的過程中,框架會記錄狀態變數和元件的對映關係,當狀態變數改變時,驅動其相關的元件重新整理。

  5. 如果開發者定義了onDidBuild,則執行onDidBuild方法。

後面會繼續補充

相關文章