1. 組件的主要生命週期
組件的生命週期,指的是組件自身的一些函數,這些函數在特殊的時間點或遇到一些特殊的框架事件時被自動觸發,其中,最重要的生命週期是 created、attached、detached,包含一個組件實例生命流程的最主要時間點
- 組件實例剛剛被創建好時,created 生命週期觸發,此時還不能調用 setData,通常情況下,這個生命週期只應該用於給組件 this 添加一些自定義屬性字段
- 在組件完全初始化完畢、進入頁面節點樹後,attached 生命週期被觸發,此時,this.data已被初始化完畢,此時可以調用 setData,這個生命週期很有用,絕大多數初始化工作可以在這個時機進行
- 在組件離開頁面節點樹後,detached 生命週期被觸發,退出一個頁面時,如果組件還在頁面節點樹中,則detached 會被觸發
2. 組件可用的全部生命週期函數
生命週期 | 參數 | 描述 | 最低版本 |
created | 無 | 在組件實例剛剛被創建時執行 | 1.6.3 |
attached | 無 | 在組件實例進入頁面節點樹時執行 | 1.6.3 |
ready | 無 | 在組件在視圖層佈局完成後執行 | 1.6.3 |
moved | 無 | 在組件實例被移動到節點樹另一個位置時執行 | 1.6.3 |
detached | 無 | 在組件實例被從頁面節點樹移除時執行 | 1.6.3 |
error | Object Error | 每當組件方法拋出錯誤時執行 | 2.4.1 |
3. 定義組件的生命週期
生命週期方法可以直接定義在 Component 構造器的第一級參數中
自小程序基礎庫版本 2.2.3 起,組件的生命週期也可以在 lifetimes 字段內進行聲明( 設置推薦的方式,其優先級最高)
示例代碼如下:
Component({
lifetimes:{
attached(){}, //在組件實例進入頁面節點樹時執行
detached(){}, //在組件實例被從頁面節點樹移除時執行
},
// 以下是舊式的定義方式,可以保持對 < 2.2.3 版本基礎庫的兼容
attached(){}, // 在組件實例進入頁面節點樹時執行
detached(){}, // 在組件實例被從頁面節點樹移除時執行
})