关键词:computed 和 watch 区别
在 Vue 中,computed
和 watch
是两种用于监听和响应数据变化的方式。
computed
是计算属性,它是基于响应式数据进行计算得到的一个新的派生属性。计算属性可以接收其他响应式数据作为依赖,并且只有当依赖数据发生变化时,计算属性才会重新计算。计算属性的值会被缓存,只有在依赖数据变化时才会重新计算,这样可以提高性能。计算属性的定义方式是使用 computed
函数或者在 Vue 组件中使用 get
和 set
方法。
下面是一个使用计算属性的示例:
import { reactive, computed } from 'vue';
const state = reactive({
firstName: 'John',
lastName: 'Doe'
});
const fullName = computed(() => {
return `${state.firstName} ${state.lastName}`;
});
console.log(fullName.value); // 输出: "John Doe"
state.firstName = 'Mike'; // 修改firstName
console.log(fullName.value); // 输出: "Mike Doe"
watch
是用于监听特定响应式数据的变化,并在数据变化时执行相应的操作。watch
可以监听单个数据的变化,也可以监听多个数据的变化。当被监听的数据发生变化时,watch
的回调函数会被执行。watch
还支持深度监听对象的变化以及异步操作。
下面是一个使用 watch
的示例:
import { reactive, watch } from 'vue';
const state = reactive({
count: 0
});
watch(() => state.count, (newVal, oldVal) => {
console.log(`count 从 ${oldVal} 变为 ${newVal}`);
});
state.count++; // 输出: "count 从 0 变为 1"
以上是 computed
和 watch
的基本用法。通过使用这两种方式,我们可以根据需要监听和响应数据的变化,实现更加灵活的逻辑和交互。