【VUE】Vue中 computed计算属性和watch侦听器的区别

核心功能不同

computed 是一个计算属性,其核心功能是基于已有的数据属性计算得出新的属性值。当某个依赖的数据发生变化时,computed 会自动重新计算并更新自己的值。因此,可以将 computed 看做是一种"派生状态"。

watch 是一个观察者函数(watcher),可以监听某个数据的变化并执行回调函数。当被监听的数据变化时,watch 将会被触发并执行与之相关的回调函数。watch 的核心功能是"响应式",它可以对数据变化做出响应。

使用场景不同

computed 适用于那些需要根据已有数据计算得出新值的情况,例如:对列表进行过滤、格式化日期等。

computed 的特点是:响应式、缓存和计算结果只有在相关依赖发生变化时才进行更新。

因此,如果一个属性需要频繁计算,又与其他属性有关联,那么使用 computed 可以有效提高应用的性能。

watch 适用于那些需要在数据变化时采取特定操作的情况,例如:异步操作、API 调用等。

watch 的特点是:监听数据变化、执行回调函数并且可以拿到新旧值。

响应式的原理不同

computed 依赖于响应式系统的更新机制,当计算属性所依赖的数据发生变化时,会自动触发重新计算。

因此,computed 是一种响应式依赖关系。

watch 使用了 Vue 的观察者机制,底层实现是通过 Object.defineProperty() 来设置 getter 和 setter 函数,并在数据变化时触发回调函数。

因此,watch 基于的是"事件监听",而不是响应式依赖关系。

相关推荐
CharlesYu0121 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
Bs_MoneyMagnet21 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
平头哥技术团队21 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰1 天前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面1 天前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方1 天前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结1 天前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言1 天前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒1 天前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机1 天前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生