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