生命週期

生命週期介紹

生命週期 是

➤ 簡單來說是 Vue 元件從「建立」到「銷毀」的過程中,會經歷一系列的階段,每個階段都可以讓你執行對應的邏輯,例如資料初始化、掛載 DOM、清理資源等

Vue 在建立元件時,會依照一定流程執行一連串的生命週期函式(也稱為 Hooks),讓開發者能在適當時機操作元件邏輯。

生命週期階段

setup()

  1. 元件邏輯的起點(Composition API)
  2. 這裡可以定義 reactive、methods、watchers 等
  3. 不可存取 DOM,也還沒掛載 template

onBeforeMount()

  1. 元件尚未掛載到 DOM 前呼叫
  2. 適合做最後的初始化,但仍無法操作 DOM

onMounted()

  1. 元件已掛載,DOM 已經可操作
  2. 常用於:讀取資料、啟動畫面動畫、操作 DOM 元素等

onBeforeUpdate()

  1. DOM 更新前觸發(當 reactive 資料變動時)
  2. 可以用來記錄 DOM 更新前的狀態

onUpdated()

  1. DOM 完成更新後呼叫
  2. 可用來對比變動前後的狀態或重新操作 DOM

onBeforeUnmount()

  1. 元件即將被卸載(例如頁面跳轉)
  2. 適合清除計時器、取消訂閱等

onUnmounted()

  1. 元件已完全卸載
  2. 通常用來釋放資源,避免記憶體洩漏
階段描述常用函式類比說明
創建中狀態與響應系統建立完成setup()演員正在化妝準備登場
掛載前DOM 還沒出現onBeforeMount()布景正裝,觀眾還沒看到演出
掛載後DOM 被插入頁面onMounted()演員登場,觀眾鼓掌(可以操作 DOM)
更新前資料改變但畫面還沒更新onBeforeUpdate()演員剛聽到台詞改了,準備重新演出
更新後畫面已更新完成onUpdated()改完台詞的演員順利完成新一場演出
卸載前即將從畫面消失onBeforeUnmount()演員要下台了,鞠躬中
卸載後元件完全移除onUnmounted()燈暗了、演員回休息室

為什麼要懂生命週期?

⏱ 掌握執行時機

確保你的資料、動畫或副作用只在適當時機執行,避免錯誤或效能問題

🧼 善用清理邏輯

在元件卸載時釋放資源(例如:事件監聽、WebSocket、interval)

⚙️ 結合第三方套件

如果你需要整合像 chart.js、Swiper 等,只能在 onMounted 後才能操作 DOM 插入這些元件