Vue当中methods、computed、watch之间的差异与区别

Vue当中methods、computed、watch之间的差异与区别

操作内容methodscomputedwatch
主被动主动被动主动
触发次数N次1N次
缓存没有没有
异步可以不可以可以

1.methods是主动调用的,执行次数是根据调用次数来决定的,显然性能比较弱,执行的时候需要加上();

2.computed是被动的,在调用以后会缓存处理,执行的时候不需要加(),不管执行几次computed计算函数都只被调用一次,它是不支持异步的;

3.不管是methods还是computed,它们的来源都是es6当中的class,methods其实就是class当中的普通方法,而computed其实就是class中的get/set方法。

4.watch是根据被监控内容的改变而触发的,它也有函数形式以及对象形式两种表现形式,而且可以对基础数据类型以及引用数据类型进行监控操作。

5.如果不进行指定设置,不管是函数以及对象的监控模式,监控都不触发。而想要实现第一次监控就触发只有在对象模式下才能够实现,并且要设置immediate为ture。

6.想要实现对深层的对象进行监控,函数书写模式也是无法实现的,得使用对象模式,并且设置属性deep为true。

7.watch监控的函数模式仅仅能够实现的是数据变化后我进行监控操作,而对象可以实现的是立即监控和深度监控。

8.watch是支持异步操作的

methods:主动调用,每次触发

computed:被动计算、缓存处理,一次触发,无法异步

watch:实时监控、立即监控、深度监控、支持异步

总结:

能用computed的不用methods、watch、 能用methods的不用watch,watch是最后的选择, 而且一定要注意,千万不要随便使用deep深度监控,性能会很差。 computed属性计算能够做的事情methods一定能做,而methods能够做的事情computed是不一定能够处理的。

注意:

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值