響應式狀態
響應式是
➤ 簡單來說是一套讓「資料變動能自動反映在畫面上」的機制
當你在模板中使用了一個 ref,Vue 會在元件首次渲染時追蹤它的使用。當你改變這個 ref 的值時,Vue 能夠偵測到變化,並自動重新執行該元件的 render 函式,生成新的虛擬 DOM,並且透過差異比對(diff)演算法,只更新實際變更的 DOM 節點,而非整個元件重新渲染或整頁 DOM 替換。這通過一個基於依賴追蹤的響應式系統實現。響應性系統在深入響應式原理中有更詳細的討論
這種「資料變 → DOM 跟著變」的設計,就是所謂的響應式。
把資料(ref / reactive)想像成「感應器」,Vue 會在元件渲染時幫它裝上「感應器」,只要資料一動,Vue 馬上知道該更新誰。
在 Composition API 風格中,推薦使用 ref()
函式聲明響應式狀態:
ref()
- 用於原始型別
- 回傳一個帶有
.value
屬性的 ref 物件 - 響應式的值就是透過
.value
取得 - 也可用來包裝物件(內部會自動轉為 reactive)
ref
在 template 模板中使用 ref
時,不需要 .value
,ref 會自動展開,但官方有提到注意事項
<script setup>
透過添加 setup 屬性在 <script>
標籤,簡化在 setup()
函式中需要手動回傳狀態和方法。
reactive()
- 用於物件、陣列、巢狀資料結構
- 回傳一個 Proxy 包裝的 reactive 物件
- 不適用原始型別
- 支援深層結構(每層都會是響應式)
- 若解構或展開會失去響應性
reactive