computed和watch的区别:
1 computed能完成的功能watch也能完成,computed支持缓存
2 watch能完成的功能computed不一定能完成,例如watch能完成异步操作
PS:
1 所有被Vue管理的函数要写成普通函数,这样new Vue的实例的时候this才能绑定到新创建的vm或组件实例对象
2 所有不被Vue管理的函数比如(定时器的回调函数,ajax的回调函数和Promise的回调函数)最好写成箭头函数,箭头函数的this绑定会继承外层函数的this绑定
1 | Vue.createApp({ |
总结:
watch和computed都是以Vue的依赖追踪机制为基础,当某一个依赖型数据(简单理解为放在data等对象下的实例数据)发生变化,所有依赖这个数据的相关数据会自动发生变化,即自动调用相关函数,来实现数据的变动
使用场景:
computed:用于处理复杂的逻辑运算,一个数据首一个或多个数据影响,用来处理watch和methods无法处理或者处理起来不方便的情况,例如处理模板中的复杂表达式
watch:用来处理一个属性变化时,需要执行某些具体的业务操作逻辑,或要在数据变化时执行异步或开销较大的操作;例如用来监控路由,input输入值的特殊处理等