vue 中 computed 和 watch 的区别

在Vue中,computed和watch都是用于监听数据的变化,并且根据变化做出相应的反应。

computed是一个计算属性,它会根据依赖的数据的变化自动计算得出一个新的值,并且具有缓存的特性。当依赖的数据发生变化时,computed属性会重新计算,并且只有在依赖的数据发生变化时才会重新计算,否则会直接返回之前计算的结果。computed属性适用于依赖较少、计算量较大的情况。

以下是一个使用computed的例子:

javascript 复制代码
new Vue({
  data: {
    firstName: 'John',
    lastName: 'Doe'
  },
  computed: {
    fullName: function () {
      return this.firstName + ' ' + this.lastName;
    }
  }
})

在上面的例子中,fullName是一个computed属性,它依赖于firstName和lastName这两个data属性。当firstName或者lastName发生变化时,fullName会自动重新计算得出新的结果。

watch则是一个侦听器,它会监听指定的数据的变化,并且在数据发生变化时执行相应的回调函数。watch适用于需要在数据变化时执行异步或者复杂的操作的情况。

以下是一个使用watch的例子:

javascript 复制代码
new Vue({
  data: {
    name: 'John Doe'
  },
  watch: {
    name: function (newVal, oldVal) {
      console.log('name changed from ' + oldVal + ' to ' + newVal);
    }
  }
})

在上面的例子中,watch会监听name属性的变化。当name发生变化时,watch会执行相应的回调函数,打印出变化前后的值。

总结一下,computed是根据依赖的数据自动计算得出一个新的值,并且具有缓存的特性;而watch则是监听指定的数据的变化,并在数据发生变化时执行相应的操作。

相关推荐
e***19355 小时前
爬虫学习 01 Web Scraper的使用
前端·爬虫·学习
我有一棵树5 小时前
file 协议与 http 协议的区别:为什么本地 HTML 无法加载相对路径 JS,以及正确的解决方式
javascript·http·html
aircrushin5 小时前
TRAE SOLO 中国版,正式发布!AI 编程的 "Solo" 时代来了?
前端·人工智能
最初的黄昏5 小时前
flutter 集成flutter_Boost
前端
有意义5 小时前
JavaScript 词法作用域与闭包:从底层原理到实战理解
前端·javascript·面试
GYY_y5 小时前
封装一个支持动态表头与权限控制的通用 VxeTable 组件
前端
某只天落5 小时前
Vue2 通用文件在线预览下载组件:一站式解决多类型文件处理需求(支持视频、文档、图片、Office)
前端
AY呀5 小时前
黑马喽大闹天宫与JavaScript的寻亲记:作用域与作用域链全解析
前端·javascript·面试
金融数据出海5 小时前
日本股票市场渲染 KlineCharts K 线图
前端·后端
是Yu欸5 小时前
DevUI MateChat 技术演进:UI 与逻辑解耦的声明式 AI 交互架构
前端·人工智能·ui·ai·前端框架·devui·metachat