Vue2计算属性computed

vue实例被创建,在触发beforeCreate之后,会做一些事情,其中就包括对computed的梳理

处理

vue会遍历computed配置的所有属性,为每一个属性创建一个watcher,并传入一个函数,传入的函数本质就是computed配置中的getter,这样一来,getter运行过程中就会收集依赖

在收集依赖的时候,不光会收集这个watcher,还会收集组件的watcher

为计算属性创建的watcher不会立即执行,是因为考虑到该属性是否被使用,如果没被使用,则不会执行,因此在创建watcher的时候使用了lazy属性

lazy属性可以使watcher不会立即执行,并且watcher内部会创建两个属性来实现缓存,value:保存watcher运行的结果,受lazy的影响最开始是undefined,dirty: 用于描述value是否为脏值,受lazy影响最开始为true

当读取计算属性时,vue会检查对应的watcher是否为脏值,如果是则运行函数,计算依赖,得到对应的值,保存在watcher的value中,并设置dirty为false,然后返回

当计算属性依赖发生变化的时候,只会触发计算属性的watcher,将dirty设置为true,当运行组件的watcher的时候会判断dirty,如果是脏值,则会重新计算,得到对应的值,保存在watcher的value中,并设置dirty为false,然后返回

setter

对于computed的setter,watcher设置监听时会直接调用computed的setter

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

合法的咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值