在 Vue 3 中,reactive 是一个用于创建响应式对象的 API。它可以将普通对象转换为响应式对象,使得当对象的属性发生变化时,相关的组件或计算属性会自动更新。

1. 基本用法

首先,确保你已经安装了 Vue 3,并在你的组件中引入 reactive

import { reactive } from 'vue';

2. 创建响应式对象

你可以使用 reactive 来创建一个响应式对象:

const state = reactive({
  count: 0,
  message: 'Hello, Vue 3!',
});

3. 使用响应式对象

在组件中,你可以直接访问和修改这个响应式对象的属性:

<template>
  <div>
    <p>Count: {{ state.count }}</p>
    <button @click="increment">Increment</button>
    <p>{{ state.message }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent, reactive } from 'vue';

export default defineComponent({
  setup() {
    const state = reactive({
      count: 0,
      message: 'Hello, Vue 3!',
    });

    const increment = () => {
      state.count++;
    };

    return { state, increment };
  },
});
</script>

4. 响应式嵌套对象

reactive 也可以处理嵌套对象:


const state = reactive({
  user: {
    name: 'Alice',
    age: 25,
  },
});

// 修改嵌套属性
state.user.age++;
5. 与 ref 的比较

虽然 reactive 可以创建响应式对象,但在处理基本数据类型时,使用 ref 更为合适。ref 适用于单个值,而 reactive 适用于整个对象。





import { ref } from 'vue';

const count = ref(0); // 使用 ref 创建响应式基本类型

6. 注意事项

  • 不要直接替换响应式对象: 修改响应式对象的属性时,避免直接替换整个对象。例如,state = { count: 1 } 将失去响应性,应该使用 state.count = 1 的方式更新。
  • 性能reactive 会递归地将所有嵌套属性转换为响应式,因此在处理大型对象时要注意性能。

小结

reactive 是 Vue 3 中强大的响应式 API,适合用于创建复杂的状态对象,可以使你的应用程序更加动态和响应式。