返回
深入浅出剖析Vue源码之computed与watch的秘密
前端
2023-09-23 02:55:11
引言
大家好,我是林三心。在当今前端开发领域,理解源码变得越来越重要。源码的理解可以帮助我们更快地捕捉到问题所在,提高开发效率。今天,我们一起来学习computed和watch的原理。
computed
computed是一个计算属性,它依赖于其他属性的值进行计算。当这些属性的值发生改变时,computed属性的值也会随之更新。computed属性的语法如下:
computed: {
fullName() {
return this.firstName + ' ' + this.lastName;
}
}
在这个例子中,fullName
是一个计算属性,它依赖于firstName
和lastName
属性的值进行计算。当firstName
或lastName
的值发生改变时,fullName
的值也会随之更新。
computed属性的计算是惰性的,这意味着只有当它被访问时才会进行计算。这可以提高性能,因为只有在需要的时候才会进行计算。
watch
watch是一个侦听器,它可以监视一个或多个属性的值的变化。当被监视的属性的值发生改变时,watch会触发一个函数。watch的语法如下:
watch: {
firstName(newValue, oldValue) {
console.log('firstName has changed from', oldValue, 'to', newValue);
}
}
在这个例子中,firstName
属性被一个watch侦听。当firstName
的值发生改变时,watch会触发一个函数,该函数会打印出firstName
的值的变化。
watch可以监视一个或多个属性的值的变化。如果要监视多个属性的值的变化,可以使用数组语法:
watch: {
['firstName', 'lastName'](newValue, oldValue) {
console.log('firstName or lastName has changed');
}
}
computed和watch的区别
computed和watch都是用来响应数据变化的,但它们之间还是有一些区别的。
- computed是一个计算属性,它依赖于其他属性的值进行计算。watch是一个侦听器,它可以监视一个或多个属性的值的变化。
- computed的计算是惰性的,这意味着只有当它被访问时才会进行计算。watch的计算是立即的,这意味着它会在属性的值发生改变时立即触发。
- computed不能被直接修改,只能通过修改其依赖的属性的值来修改。watch可以被直接修改,可以使用
this.$watch()
方法来修改。
结语
以上就是computed和watch的原理。希望通过这篇文章,你能更深入地理解Vue的响应式系统和数据绑定机制。如果你想了解更多关于Vue源码的知识,可以参考官方文档或一些优秀的Vue源码分析文章。