
Vue.js 3 引入了 ref 和 reactive 两个新的方法来创建响应式数据。与 Vue.js 2 中的 data 选项不同,这两个方法提供了更强大、更方便的方式来管理组件中的数据。
- ref
ref 方法用于创建一个响应式的数据引用。当一个对象被 ref 包装后,它的属性会被转换为响应式数据,并且在组件重新渲染时会自动更新。
使用 ref 的语法如下:
import { ref } from 'vue';
const count = ref(0); // 创建一个响应式的数字在模板中使用 ref 时,需要通过 .value 属性来访问其值:
<template>
<div>{{ count.value }}</div>
</template>需要注意的是,如果将 ref 对象的属性赋值为一个新的非响应式值,那么这个属性就不再是响应式的了。例如:
count.value = 1; // count 仍然是一个响应式对象,但是 count.value 变成了非响应式值- reactive
reactive 方法用于创建一个响应式的对象。与 ref 不同的是,reactive 可以直接将一个普通的 JavaScript 对象转换为响应式数据,而不需要手动添加 .value 属性。此外,reactive 还提供了一个额外的选项 as,可以将一个对象的属性名映射到另一个名称上,方便在模板中使用。
使用 reactive 的语法如下:
import { reactive } from 'vue';
const state = reactive({ count: 0, message: 'Hello' }); // 创建一个响应式的对象在模板中使用 reactive 时,可以直接访问其属性:
<template>
<div>{{ state.count }}</div>
<p>{{ state.message }}</p>
</template>需要注意的是,如果直接修改 reactive 对象的属性值,那么这个属性仍然是响应式的。但是,如果修改的是对象的某个属性的值,那么只有这个属性会变成响应式,其他属性则不会受到影响。例如:
state.count++; // state.count 仍然是响应式的,但是 state.message 不是响应式的了









