返回
Vue2源码分析(五):computed & watch
前端
2023-12-20 21:53:32
前言
在之前的文章中,我们已经分析了Vue2 中响应式数据的实现原理,以及如何通过观察者模式来实现数据的更新。在这一篇中,我们将继续分析Vue2 中的两个重要特性:computed 和 watch。
computed
computed 属性是一个计算属性,它允许您在组件中定义一些计算值。这些计算值可以依赖于其他属性,并且当这些属性发生变化时,计算值也会自动更新。
computed 属性的创建过程如下:
- 当组件初始化时,Vue 会解析模板中的所有计算属性。
- 对于每个计算属性,Vue 会创建一个 Watcher 对象。这个 Watcher 对象会监视计算属性所依赖的属性。
- 当计算属性所依赖的属性发生变化时,Watcher 对象就会触发计算属性的更新。
- 计算属性的更新过程会重新计算计算属性的值。
- 计算属性的更新值会更新组件的视图。
watch
watch 是一个观察者 API,它允许您在组件中监视某些属性或表达式的变化。当这些属性或表达式发生变化时,您可以执行一些操作,例如更新组件的状态、调用方法,甚至发出网络请求。
watch 的创建过程如下:
- 当组件初始化时,Vue 会解析模板中的所有 watch 属性。
- 对于每个 watch 属性,Vue 会创建一个 Watcher 对象。这个 Watcher 对象会监视 watch 属性所指定的属性或表达式。
- 当 watch 属性所指定的属性或表达式发生变化时,Watcher 对象就会触发 watch 属性的更新。
- watch 属性的更新过程会执行 watch 属性所指定的回调函数。
区别
computed 和 watch 都是用来响应数据变化的特性,但它们之间还是有一些区别的。
- computed 是一个计算属性,它允许您在组件中定义一些计算值。这些计算值可以依赖于其他属性,并且当这些属性发生变化时,计算值也会自动更新。
- watch 是一个观察者 API,它允许您在组件中监视某些属性或表达式的变化。当这些属性或表达式发生变化时,您可以执行一些操作,例如更新组件的状态、调用方法,甚至发出网络请求。
总结
computed 和 watch 都是非常有用的特性,它们可以帮助您在组件中实现更复杂的功能。如果您正在开发一个Vue 应用程序,那么您应该了解这两个特性的使用方法。