生命週期鉤子
本頁說明 when 選項中各鉤子的觸發時機、參數,以及如何中止渲染。
寫法
const app = new QUI({
id: "app",
data: { count: 0 },
when: {
beforeRender: () => {},
rendered: (sec) => console.log("rendered in", sec),
beforeUpdate: () => app.data.count < 10,
updated: (sec) => console.log("updated in", sec),
},
});
鉤子一覽
| 鉤子 | 觸發時機 | 參數 | 回傳 false |
|---|---|---|---|
beforeRender |
初始渲染前 | 無 | 取消初始渲染,畫面維持原始模板 |
rendered |
初始渲染套用到 DOM 後 | 耗時秒數 | 無作用 |
beforeUpdate |
資料變更、去抖動 300 ms 後 | 無 | 取消這一次更新 |
updated |
更新套用到 DOM 後 | 耗時秒數 | 無作用 |
beforeDestroy |
目前版本不會觸發 | 無 | 無 |
destroyed |
目前版本不會觸發 | 無 | 無 |
beforeDestroy 與 destroyed 會被接受,但 QUI 沒有公開的銷毀方法,因此不會被呼叫。
規則
| 規則 | 說明 |
|---|---|
| 取消判斷 | 只有同步回傳 false 才會取消;async 函式回傳 Promise,無法取消 |
| 更新去抖動 | 300 ms 內的多次資料寫入只觸發一次 beforeUpdate / updated |
| 讀寫資料 | rendered 之後 app.data 已就緒,見 響應式資料 |
舊寫法
把鉤子放在 lifecycle 物件、直接放在選項頂層,或使用 before_render、before_update、before_destroy 等 snake_case 名稱仍可運作,但預計在 1.0.0 移除,見 淘汰計畫。