欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 組件生命周期

組件的生命周期,指的是組件自身的一些函數(shù),這些函數(shù)在特殊的時(shí)間點(diǎn)或遇到一些特殊的框架事件時(shí)被自動(dòng)觸發(fā)。

其中,最重要的生命周期是 created attached detached ,包含一個(gè)組件實(shí)例生命流程的最主要時(shí)間點(diǎn)。

  • 組件實(shí)例剛剛被創(chuàng)建好時(shí), created 生命周期被觸發(fā)。此時(shí),組件數(shù)據(jù) this.data 就是在 Component 構(gòu)造器中定義的數(shù)據(jù) data 。 此時(shí)還不能調(diào)用 setData 。 通常情況下,這個(gè)生命周期只應(yīng)該用于給組件 this 添加一些自定義屬性字段。
  • 在組件完全初始化完畢、進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)后, attached 生命周期被觸發(fā)。此時(shí), this.data 已被初始化為組件的當(dāng)前值。這個(gè)生命周期很有用,絕大多數(shù)初始化工作可以在這個(gè)時(shí)機(jī)進(jìn)行。
  • 在組件離開(kāi)頁(yè)面節(jié)點(diǎn)樹(shù)后, detached 生命周期被觸發(fā)。退出一個(gè)頁(yè)面時(shí),如果組件還在頁(yè)面節(jié)點(diǎn)樹(shù)中,則 detached 會(huì)被觸發(fā)。

# 定義生命周期方法

生命周期方法可以直接定義在 Component 構(gòu)造器的第一級(jí)參數(shù)中。

自小程序基礎(chǔ)庫(kù)版本 2.2.3 起,組件的的生命周期也可以在 lifetimes 字段內(nèi)進(jìn)行聲明(這是推薦的方式,其優(yōu)先級(jí)最高)。

# 代碼示例

Component({
  lifetimes: {
    attached: function() {
      // 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行
    },
    detached: function() {
      // 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行
    },
  },
  // 以下是舊式的定義方式,可以保持對(duì) <2.2.3 版本基礎(chǔ)庫(kù)的兼容
  attached: function() {
    // 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行
  },
  detached: function() {
    // 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行
  },
  // ...
})

在 behaviors 中也可以編寫(xiě)生命周期方法,同時(shí)不會(huì)與其他 behaviors 中的同名生命周期相互覆蓋。但要注意,如果一個(gè)組件多次直接或間接引用同一個(gè) behavior ,這個(gè) behavior 中的生命周期函數(shù)在一個(gè)執(zhí)行時(shí)機(jī)內(nèi)只會(huì)執(zhí)行一次。

可用的全部生命周期如下表所示。

生命周期 參數(shù) 描述 最低版本
created 無(wú) 在組件實(shí)例剛剛被創(chuàng)建時(shí)執(zhí)行 1.6.3
attached 無(wú) 在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行 1.6.3
ready 無(wú) 在渲染線(xiàn)程被初始化已經(jīng)完成 1.6.3
moved 無(wú) 在組件實(shí)例被移動(dòng)到節(jié)點(diǎn)樹(shù)另一個(gè)位置時(shí)執(zhí)行 1.6.3
detached 無(wú) 在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行 1.6.3
error Object Error 每當(dāng)組件方法拋出錯(cuò)誤時(shí)執(zhí)行 2.4.1

注意

取決于渲染線(xiàn)程的繁忙情況,ready 回調(diào)可能會(huì)非常晚,并可能在組件被移除后才回調(diào)。絕大多數(shù)情況下,應(yīng)使用 attached 代替。

使用 ready 生命周期時(shí),需要處理以下可能的情況:

  1. attached 觸發(fā)后,ready 被觸發(fā)
  2. attached 未觸發(fā),僅 ready 被觸發(fā)
  3. attacheddetached 依次觸發(fā)后,ready 被觸發(fā)

# 組件所在頁(yè)面的生命周期

還有一些特殊的生命周期,它們并非與組件有很強(qiáng)的關(guān)聯(lián),但有時(shí)組件需要獲知,以便組件內(nèi)部處理。這樣的生命周期稱(chēng)為“組件所在頁(yè)面的生命周期”,在 pageLifetimes 定義段中定義。其中可用的生命周期包括:

生命周期 參數(shù) 描述 最低版本
show 無(wú) 組件所在的頁(yè)面被展示時(shí)執(zhí)行 2.2.3
hide 無(wú) 組件所在的頁(yè)面被隱藏時(shí)執(zhí)行 2.2.3
resize Object Size 組件所在的頁(yè)面尺寸變化時(shí)執(zhí)行 2.4.0
routeDone 無(wú) 組件所在頁(yè)面路由動(dòng)畫(huà)完成時(shí)執(zhí)行 2.31.2

注意:自定義 tabBar 的 pageLifetime 不會(huì)觸發(fā)。

# 代碼示例

Component({
  pageLifetimes: {
    show: function() {
      // 頁(yè)面被展示
    },
    hide: function() {
      // 頁(yè)面被隱藏
    },
    resize: function(size) {
      // 頁(yè)面尺寸變化
    }
  }
})