• vue3 watch和 watchEffec和 computed 对比


    watch和 watchEffect

    watch

    • watch显式指定依赖数据,依赖数据更新时执行回调函数
    • 具有一定的惰性(lazy) , 第一次页面展示的时候不会执行,只有数据变化的时候才会执行(设置immediate: true时可以变为非惰性,页面首次加载就会执行)
    • 监视ref定义的响应式数据时可以获取到原值
    • 既要指明监视的属性,也要指明监视的回调

    watchEffect

    • watchEffect自动收集依赖数据,依赖数据更新时重新执行自身
    • 立即执行,没有惰性,页面的首次加载就会执行
    • 无法获取到原值,只能得到变化后的值
    • 不用指明监视哪个属性,监视的回调中用到哪个属性就监视哪个属性

    watch函数有两个小坑:

    监视reactive定义的响应式数据(该数据为一个对象,因为reactive只能定义数组或对象类型的响应式)时:oldValue无法正确获取,会强制开启深度监视,deep配置不生效。

    监视reactive定义的响应式数据中的某个属性时,且该属性是一个对象,那么此时deep配置生效。

    https://blog.csdn.net/weixin_52148548/article/details/125073998

    总结:

    参数不同:watchEffect 只需要传递一个回调函数,不需要传递侦听的数据,它会在页面加载时主动执行一次,来收集依赖;而watch至少要有两个参数(第三个参数是配置项),第一个参数是侦听的数据,第二个参数是回调函数

    结果不同:watchEffect 获取不到更改前的值;而watch可以同时获取更改前和更改后的值

     

    watchEffect与computed

    watchEffect与computed有点像:

    但是computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。

    而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。

    computed若是值没有被使用时不会调用,但是watchEffect始终会调用一次

  • 相关阅读:
    C#之事件
    C#之委托
    CIC许可更新
    HMP许可更新
    知识库上传
    [转]spring中<tx:advice></tx:advice>意义
    [转]spring property标签中的 ref属性和ref 标签有什么不同
    [转] Spring@Autowired注解与自动装配
    [转]SpringMVC入门
    [转]SpringMVC拦截器详解[附带源码分析]
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/16709670.html
Copyright © 2020-2023  润新知