vue ref vs reactive
在 Vue 3 中,reactive 和 ref 是兩個用于創建響應式狀態的 API。它們在功能上有一些重疊,但在使用和實現上有不同的用途和適用場景。下面是對它們的詳細解釋和比較:
reactive
-
功能:
reactive函數用于將一個對象轉換為響應式對象。這個響應式對象在其屬性發生變化時能夠自動觸發依賴它的組件重新渲染。 -
用法:
import { reactive } from 'vue'; const state = reactive({ count: 0, name: 'Vue' }); state.count++; // 響應式地增加 count state.name = 'Vue 3'; // 響應式地修改 name -
特點:
- 適用于對象和數組等復雜結構。
- 對象內的所有屬性都是響應式的。
- 深層嵌套的屬性也是響應式的。
ref
-
功能:
ref函數用于創建一個響應式的引用。它可以用來包裝一個基本類型(如字符串、數字、布爾值)或者對象。引用的.value屬性在其發生變化時能夠自動觸發依賴它的組件重新渲染。 -
用法:
import { ref } from 'vue'; const count = ref(0); count.value++; // 響應式地增加 count對于對象:
const user = ref({ name: 'Vue', age: 3 }); user.value.name = 'Vue 3'; // 響應式地修改 name -
特點:
- 適用于基本類型(如字符串、數字、布爾值)。
- 當包裝對象時,必須通過
.value訪問和修改屬性。 - 可以用來創建響應式的 DOM 引用。
選擇使用 reactive 或 ref 的場景
-
使用
reactive:- 當你需要一個響應式對象,并且希望它的所有屬性都能響應變化時。
- 當你需要對一個深層嵌套的對象進行響應式處理時。
-
使用
ref:- 當你需要一個響應式的基本類型值(如數字、字符串、布爾值)時。
- 當你需要一個可以響應變化的引用,并且該引用可能是一個簡單值時。
- 當你需要一個可以與模板中 DOM 元素進行綁定的響應式引用時。
示例比較
使用 reactive:
import { reactive } from 'vue';
const state = reactive({
count: 0,
user: {
name: 'Vue',
age: 3
}
});
state.count++; // 響應式
state.user.age = 4; // 響應式
使用 ref:
import { ref } from 'vue';
const count = ref(0);
const user = ref({
name: 'Vue',
age: 3
});
count.value++; // 響應式
user.value.age = 4; // 響應式
總的來說,reactive 和 ref 是 Vue 3 中實現響應式編程的兩個重要工具。選擇哪個 API 主要取決于你的數據結構和使用場景。

浙公網安備 33010602011771號