在Vue中,watch和computed都可以用于监听数据的变化,但它们的使用场景和工作原理有所不同。
Computed计算属性主要用于简化模板字符串的计算复杂度,防止模板过于冗余,它具有缓存特性。Computed用于监控自己定义的变量,该变量不在data中声明,直接在computed中定义,然后可以在页面上进行双向数据绑定,展示结果或进行其他处理。
相比之下,Watch监听器主要用于监控Vue实例的变化,它监控的变量必须在data中声明,可以是一个变量,也可以是一个对象,一般用于监控路由、input输入框的值等特殊处理。Watch监听器比较适合一个数据影响多个数据的场景,它不具有缓存性。
除此之外,还有一个重要的区别是:计算属性不能执行异步任务,必须同步执行。也就是说,计算属性不能向服务器请求或者执行异步任务。如果遇到异步任务,就交给侦听属性。
总的来说,Watch适用于需要执行异步任务或监听对象属性的情况,而Computed适用于需要缓存结果或简化模板字符串的情况。