【computed原理】
Vue中的data定义的参数使用发布订阅模式初始化后,开始解析computed属性
1. 对每个computed属性建立专门的Watcher
2. computed属性方法中访问的每一个data参数,都会调用参数的get方法,这个时候,将参数的dep加入Watcher,同时dep的subs添加Watcher
3. 当我们改变对应参数的值的时候,会调用参数的set方法,触发dep的notify方法,将Watcher设置为dirty
4. 当访问computed属性,触发get方法的时候,会发现dirty被触发,则重新获取新的值(必须触发get方法才会去获取新的值)
【Vuex原理】
Vuex利用了computed的原理,相当于注册了一个无template的组件,store则是组件中的data,当我们安装Vuex组件的时候,install方法中已经在beforeCreate生命周期的时候注册了全局store,当改变store的值的时候,利用set方法的notify触发computed属性dirty,获取值的时候调用get方法获取最新的值
【参考文档】