Vue 响应系统源码阅读

148 阅读1分钟

Vue3 源码位置

注释版本代码位置

随笔

1、watch和compute的区别

watch的实现可以参考这里,源码注释在这里

compute的实现可以参考这里,源码注释在这里

目前来看其区别在:

  • computed支持缓存,相依赖的数据发生改变才会重新计算;watch不支持缓存,只要监听的数据变化就会触发相应操作

  • computed不支持异步,当computed内有异步操作时是无法监听数据变化的;watch支持异步操作

  • computed为用户提供了getter&setter,watch为用户提供了cb。这是他们主要的区别。gettter&setter用来处理数据访问和设置时的钩子函数,cb为用户提供了数据变化时执行的函数,执行的过程中watch会自动传入一些有用的参数。

但是注意:watch和compute本质上没有什么不同,都是调用effect函数,传递scheduler实现的,只是传递的scheduler不同而已。