在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来监视其变化,并执行相应的操作。只是在使用方法和适用场景上有一些区别。