vue一个计算属性如何监听另一个计算属性

本文探讨了Vue中计算属性与Watcher的关系,解释了计算属性如何在使用时才收集Watcher,以及为何在未使用时不会触发更新。重点讨论了计算属性如何在模板中未直接引用data属性的情况下,仍能触发渲染Watcher。通过分析计算属性的初始化过程和依赖收集机制,揭示了计算属性之间看似监听的错觉,并澄清了计算属性不能直接监听另一个计算属性的事实。
摘要由CSDN通过智能技术生成

一般对vue了解不深的都理解不了这个问题,

首先说一下vue的基本知识点:

watcher 分为三种,lazy watcher和 user watcher和渲染watcher

每一个计算属性都对应一个lazy watcher对象,

每一个watch对象的属性都对应一个user watcher对象,

每一个组件都对应一个渲染watcher对象

每一个data中的属性都对应一个dep对象,dep对象是用来收集watcher和通知watcher更新的,

简单来说就是当前属性的watcher管理对象,当获取data中的属性时,会触发属性的get方法,然后当前属性对应的dep对象会进行watcher收集操作,当更新data中的属性时,会触发属性的set方法,然后当前属性对应的dep对象会通知之前收集的watcher进行更新操作

那么,什么是lazy watcher?

观察vue的初始化过程,发现一个重要的知识点,就是user watcher和渲染watcher在创建的时候,就会执行watcher的收集操作

详细步骤是执行watcher的get方法赋值给watcher的value属性,get方法会触发getter方法,getter方法对于user watcher来说会去获取data中属性的值,对于渲染watcher,会去执行更新组件的方法,里面会先执行render方法生成vnode,render方法里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值