在Vue 3中,您可以使用watch
函数和watch
选项来监视ref
和reactive
创建的响应式数据的变化。下面是它们的使用方法和区别:
使用方法:
使用ref
和watch
:
import { ref, watch } from 'vue';
const count = ref(0);
watch(count, (newVal, oldVal) => {
console.log(`count 从 ${oldVal} 变为 ${newVal}`);
});
使用reactive
和watch
:
import { reactive, watch } from 'vue';
const state = reactive({
count: 0,
});
watch(
() => state.count,
(newVal, oldVal) => {
console.log(`count 从 ${oldVal} 变为 ${newVal}`);
}
);
区别:
-
对单个值的监视:
ref
用于创建单个基本数据类型的响应式数据,可以直接通过watch
来监视其变化。reactive
用于创建包含多个属性的响应式对象,需要通过() => state.count
这样的方式来指定要监视的属性。
-
访问值的方式:
- 在
ref
中,您需要使用.value
来访问或修改其值。 - 在
reactive
中,您可以直接访问和修改其属性。
- 在
-
适用场景:
ref
适合用于创建单个基本数据类型的响应式数据,例如数字、字符串等。reactive
适合用于创建包含多个属性的响应式对象。
总之,无论是ref
还是reactive
创建的数据,都可以使用watch
来监视其变化,并执行相应的操作。只是在使用方法和适用场景上有一些区别。