23
Vue 3 學習之旅
進階應用

處理物件與陣列:reactive()

·6 分鐘閱讀·進階應用

摘要

reactive() 是 Vue 提供的另一個建立響應式狀態的函數,它專門用於將一個物件或陣列轉換成響應式的代理物件。

定義與說明

reactive() 函數接收一個物件或陣列,並回傳該物件的「響應式代理」。與 ref() 不同,當你操作 reactive() 建立的代理物件時,你不需要使用 .value,可以像操作普通 JavaScript 物件一樣直接存取和修改其屬性,Vue 會自動追蹤這些變化。

主要限制:

reactive() 只能用於物件型別(Object, Array 等),且你不能直接替換整個代理物件,否則會失去響應性。

實作範例

Vue SFC
<script setup>
import { reactive } from 'vue';

// 建立一個響應式的代理物件
const user = reactive({
  name: 'Jake',
  age: 30,
  hobbies: ['Coding', 'Music']
});

function addHobby() {
  // 直接修改屬性,無需 .value
  user.hobbies.push('Reading');
  user.age++;
}
</script>

<template>
  <p>姓名: {{ user.name }}</p>
  <p>年齡: {{ user.age }}</p>
  <p>愛好: {{ user.hobbies.join(', ') }}</p>
  <button @click="addHobby">增加愛好和年齡</button>
</template>

結論

reactive() 是讓複雜物件或陣列整體具備響應性的理想工具。它的優點是語法更自然(無需 .value),但缺點是只能用於物件型別且不能直接賦值替換。

reactive 物件 陣列