vue中computed和watch之间的区别

1:区别体现

  • computed能完成的功能,watch都可以完成。
  • watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。
  • 两个重要的小原则:

      1.所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。

      2.所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象。

            计算属性:

                    1.定义:要用的属性不存在,要通过已有属性计算得来。

                    2.原理:底层借助了Objcet.defineproperty方法提供的getter和setter。

                    3.get函数什么时候执行?

                                (1).初次读取时会执行一次。

                                (2).当依赖的数据发生改变时会被再次调用。

                    4.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。

                    5.备注:

                            1.计算属性最终会出现在vm上,直接读取使用即可。

                            2.如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变。

                监视(侦听)属性watch:

                    1.当被监视的属性变化时, 回调函数自动调用, 进行相关操作

                    2.监视的属性必须存在,才能进行监视!!

                    3.监视的两种写法:

                            (1).new Vue时传入watch配置

                            (2).通过vm.$watch监视

2:简单比较:计算属性computed不能开启异步任务,而侦听属性watch可以。

猜你喜欢

转载自blog.csdn.net/weixin_50656154/article/details/125770633