Vuex通过什么方式提供响应式数据以及$Store是如何挂载到实例this上?

本文深入探讨Vuex如何提供响应式数据,通过源码分析Vuex的State和Getters响应机制,以及解释$Store如何通过Vue插件系统挂载到实例的this上,使开发者能在组件中便捷访问全局Store。
摘要由CSDN通过智能技术生成

1.前言

使用过Vue框架的小伙伴们都应该接触过Vuex,Vuex是一个专门为Vue.js应用程序开发的状态管理模式。本篇博客我们主要是通过学习Vuex源码,弄清楚以下两个问题:

  • Vuex通过什么方式提供响应式数据?
  • $Store是如何挂载到实例this中?
2.Vuex通过什么方式提供响应式数据?

Vuex的两大核心State和Getters都是响应式的,即当state或getter的某一个状态改变时,它是能驱动视图发生相应的改变。

下面我们阅读部分源码(resetStoreVM()方法):

function resetStoreVM (store, state, hot) {
   
  /* 存放之前的vm对象 */
  const oldVm = store._vm
  store.getters = {
   }
  store._makeLocalGettersCache = Object.create(null)
  const wrappedGetters = store._wrappedGetters
  const computed = {
   }
  /* 
  	通过Object.defineProperty为每一个getter方法设置get方法,比如获取
  	this.$store.getters.test的时候获取的是store._vm.test,也就是Vue
  	对象的computed属性 
 */
 /*
 	将所有的Getters存放到computed对象中,然后在下面的new Vue实例中,将其注册为computed
 */
  forEachValue(wrappedGetters, (fn, key) => {
   
    computed[key] 
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值