【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 基于的是"事件监听",而不是响应式依赖关系。

相关推荐
阿凡达蘑菇灯几秒前
langgraph---条件边
开发语言·前端·javascript
San301 分钟前
深入理解浏览器渲染流程:从HTML/CSS到像素的奇妙旅程
javascript·css·html
xiaohe06011 分钟前
🥳 Uni ECharts 2.1 发布:正式支持鸿蒙,零成本迁移、全平台兼容、跨端开发零负担!
vue.js·uni-app·echarts
海云前端12 分钟前
别再堆 if-else 了!TypeScript 模式匹配让代码更优雅
前端
拖拉斯旋风2 分钟前
深入理解 JavaScript 执行机制之V8引擎:从编译到执行的完整生命周期
javascript·面试
RAY_CHEN.13 分钟前
vue递归组件-笔记
前端·javascript·vue.js
WenGyyyL13 分钟前
GMNER多模态实体识别任务——ReAct结合
前端·react.js·前端框架
晴殇i35 分钟前
千万级点赞系统架构演进:从单机数据库到分布式集群的完整解决方案
前端·后端·面试
CDwenhuohuo36 分钟前
WebSocket 前端node启用ws调试
前端·websocket·网络协议
Mintopia1 小时前
🤖 具身智能与 WebAIGC 的融合:未来交互技术的奇点漫谈
前端·javascript·aigc