Vue Watch方法 和实现原理

Vue的watch函数用于观察一个或多个响应式引用(ref)或计算属性(computed)。当观察的目标发生变化时,watch函数会执行一个回调函数

以下是一个使用watch的例子:

import { ref, watch } from 'vue';

const count = ref(0);

watch(count, (newValue, oldValue) => {
  console.log(`count changed from ${oldValue} to ${newValue}`);
});

count.value++; // 输出 "count changed from 0 to 1"

在这个例子中,我们创建了一个响应式引用count,然后使用watch来观察它。当count的值改变时,watch的回调函数就会被执行。

watch函数的实现原理是使用Vue的响应式系统来跟踪回调函数的依赖关系。当回调函数访问一个响应式值时,这个值就会被添加到回调函数的依赖列表中。然后,当这个值改变时,回调函数就会被重新执行

你也可以使用watch来观察多个响应式引用或计算属性。在这种情况下,你需要传递一个数组作为watch的第一个参数,然后回调函数的参数也会是一个数组,包含每个观察目标的新值和旧值。

import { ref, watch } from 'vue';

const count1 = ref(0);
const count2 = ref(0);

watch([count1, count2], ([newCount1, newCount2], [oldCount1, oldCount2]) => {
  console.log(`count1 changed from ${oldCount1} to ${newCount1}`);
  console.log(`count2 changed from ${oldCount2} to ${newCount2}`);
});

count1.value++; // 输出 "count1 changed from 0 to 1"
count2.value++; // 输出 "count2 changed from 0 to 1"

在这个例子中,我们同时观察count1和count2。当任何一个值改变时,watch的回调函数都会被执行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容