问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

温故而知新,Vue 2 和 Vue 3 对 computed 的实现

发布网友 发布时间:2024-09-30 14:57

我来回答

1个回答

热心网友 时间:2024-11-30 05:59

在Vue中,计算属性computed是处理复杂逻辑的利器,其基于响应式依赖进行缓存,只在相关依赖改变时重新计算,从而优化性能。计算属性与侦听器watch的区别在于,计算属性创建新属性并挂载于实例上,而侦听器监听实例上已有的响应式属性。计算属性具有惰性求值特性,只有在依赖改变时才重新求值。侦听器则在依赖数据改变时执行回调。

在Vue2中,计算属性初始化发生在实例初始化过程中,通过`initState`和`initComputed`函数实现。计算属性先于watch初始化,因为计算属性依赖响应式属性的缓存特性。`initComputed`创建Watcher实例,标记lazy和dirty属性,以便在计算属性依赖改变时重新求值。`defineComputed`方法通过`Object.defineProperty`添加计算属性,其`get`和`set`方法在计算属性依赖改变时触发更新。计算属性初始化完成,通过`evaluate`方法在依赖改变时重新计算。

Vue3简化了计算属性的使用,接受getter函数或包含get和set的函数。计算属性基于响应式属性值计算,依赖改变触发effect的scheler执行。在getter方法中,`_dirty`变量表示是否需要计算值。当依赖改变时,调用scheler将`_dirty`设为true,通知重新计算。第一次获取计算属性值时,依赖属性被访问,进行依赖收集操作,使得计算属性能感知内部依赖的变化。

在Vue3中,增加computed调试功能,接受`onTrack`和`onTrigger`选项。这些方法在开发模式下用于跟踪依赖属性和处理依赖改变。当计算属性getter被调用时,触发`trackRefValue`方法,如果存在`onTrack`回调,则执行之。类似地,当依赖属性改变时触发`onTrigger`方法。

综上,无论是Vue2还是Vue3,计算属性的实现核心思想是基于响应式依赖的惰性求值和缓存机制,确保在依赖改变时动态计算新值。Vue3在Vue2的基础上简化了计算属性的使用和调试,提供更高效的性能和更便捷的开发体验。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
分手后说过的话精选185句 分手说的精选113句 分手怎么挽回女朋友的句子精选162句 现在工作忙的要死,女朋友因为这跟我分手,我该怎么办? ...任意组成两个不同的两位小数,并把它们改写成以0.001为计数单位... m3/MW▪h怎么换算m3/s▪GW? 交通银行的刷卡金怎么使用呢? 什么时候刷卡金 ...突然前面两条腿好像断了一样 走路前面两腿都无法支撑 吃饭就坐着吃... 王者荣耀:伤害与回复兼备的杨戬,为何不受待见,真废了吗? Vue 计算属性(Computed)传参 你知道什么时候用Vue计算属性吗? 闪光灯指数是什么意思? 闪光灯闪光指数是什么意思? 我是一个有家室的女人爱上了一个有家室的男人,而男人也喜欢我,该怎么办... 我是一个有家室的男人。和我几年前?深深爱上一个女人。她,最要命的是... 我是一个有家室的人,最近出去竟然爱上一个有夫之妇,为她花了不少钱... ...个半月了,他早已又有女友,但我怎么还是老想着他,而且想着他和他的... ...的田,如果田长增加8米或宽增加5米,面积比原来增加80平方米,原来的面... 世界杯在欧洲国家举办过几届 世界杯历届举办年份 1.一个长方形,它的宽为5米,如果宽增加4米,则面积就增加60平方米,原来... 为什么有的视频无法分享到微信朋友圈? 为什么我会感觉前男友还没有放下我,但现实他说放下我对我也死心了 长方形的长增加5米,或者宽增加3米,面积都比原来增加了75平方米,问原来... ...规模将长和宽各增加5米,现在面积比原来增加( )平方米。 一个长方形长增加4米,宽增加5米,它的面积增加多少平方米? 一个长方形的长是x米 宽是y米,如果宽不变,长减少2米,面... 一个长方形的长为x米,宽为y米 ; 若宽增加5米,长不变,则面积比原来增加... ...宽为y米。如果宽增加5米,则面积比原来增加( )平方米。 A.4X B.5X... 如何一次性将Excel中的字体替换成另一种字体? 摩托车轴承设计最大载重200公斤,实际上短时间能承受400公斤吗,在静止... 轿车轴承一般能用多久? 森林人多少公里换轴承? 手滑赞了别人的qq名片应该怎样取消 梦见发大水一个浪街一个浪的好吗我还在一个房子里被大水冲走了但是没事... qq运动不小心点赞了一个不喜欢我的渣男前男友我咋办。。!我好后悔啊... 手机QQ,我的好友什么的都在上面,也没有设置,用手滑也没有,怎么退出? 小天才电话手表打电话为什么打不通 梦见水鬼给万字 eSATA介绍 今天用Daemon把一张光盘做成虚拟光盘,没注意,做成了mdx格式,问一下这 ... 微信如何快速截屏? 手机打电话的时候,为什么总是弹出广告啊? 微信通话怎么能听到对方的微信语音? 我微信被自动扣费了¥35是我不小心点到的,我也不知道现在那个软件... 为什么别人微信语音我能听到 ...的语音听不清楚 声音很小 可我却能听到对方发来的? 梦见妈妈找厕所的预兆 ❓为什么我昨天晚上做梦和我亲生父亲在Ml,我真的不知道为什么...