computed和watch的区别?(Vue面试题)

有两种答法,大家自行参考,也可以结合起来。

第一种:

  • conputed 能完成的功能, watch 都可以完成
  • watch 能完成的功能, computed 不一定能完成。 例如:watch 可以进行异步操作

   两个重要的小原则:

  • 所有被 Vue 管理的函数,最好写成普通函数,这样 this 的指向才是 vm 或 组件实例对象   
  • 所有不被 Vue 所管理的函数(定时器的回调函数、ajax的回调函数、promise的回调函数等)最好写成箭头函数,这样 this 的指向才是 vm    或 组件实例对象
  • 例子理解:

第二种:

computed值有缓存、触发条件是依赖值发生更改  |   watch无缓存支持异步、监听数据变化

computed:

        是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值;


watch:

        更多的是观察的作用,支持异步,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;

应用场景:

  • computed:

                需要进行数值计算,并且依赖于其它数据时,应该使用 computed。

                因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算;

  • watch:

                需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。

                这些都是计算属性无法做到的。

猜你喜欢

转载自blog.csdn.net/weixin_54614831/article/details/126476313