当前位置: 首页 > news >正文

Vuex源码-各原理简单总结

1,简单总结

Vuex就是一个构造函数,他拥有install方法Store类这两个属性。在vue初始化调用new Vue的时候,将store作为参数传入,然后调用Vue.use()实际是调用install方法将store这个实例挂载到全局,从而可以保证全局只有一个唯一的store对象。

Store这个类拥有commit和dispatch这些方法,同时将用户传入的state包装成data,从而在vew Vue()的过程中实现了响应式

2,install方法

install方法是借助vue的beforeCreate钩子函数执行,因为此时$options还没有初始化好,他的核心逻辑就是将$options.store赋值到全局$store,且最终将插件添加到installedPlugins中,保证相同的插件不会被重复注册。

3,state实现

vuex中的state值就是Store的一个属性,可以直接从$store对象中获取。同时由于在vue初始化时,data中的数据是响应式的,因此实现的过程将options.state赋值给了data,实现了响应式

4,getter实现

用户传入的getter存储到getters数组中,也是利用Object.defineProperty的get接口,同时借助了computed计算属性实现实时监听。

5,mutation实现

与getter的实现类似,也是将用户传入的mutation存入mutations数组,触发mutation要调用的commit方法实际是访问数组中的某个mutation而触发的调用(eg:this.mutations[method](arg))

6,action实现

action的实现与mutation几乎雷同,只是action的dispatch触发,是定义的异步箭头函数(this.actions[type](payload))。

详细总结参考手写Vuex核心原理

http://www.lryc.cn/news/216222.html

相关文章:

  • vcpkg 使用 cmake 编译C/C++工程代码时指定使用静态库链接编译
  • FlinkCDC系列:数据同步对部分字段的处理,只更新部分字段
  • Linux 包操作 (rpm)
  • Docker中OceanBase挂载过后,删除再启动无限重启的解决办法
  • react中的forwardRef 和memo的区别?
  • 偶数矩阵判断【C语言作业】
  • stable-diffusion 电商领域prompt测评集合
  • 协方差矩阵
  • 0基础学习VR全景平台篇第117篇:利用插件地拍补地 - PS教程
  • git的命令操作
  • Nginx+keepalived实现七层的负载均衡
  • 至少在两个数组中出现的值
  • 子女关于骨灰发生争议,骨灰该如何安置?
  • android隐藏输入法的一些尝试,最后一个可行
  • 【go-zero】go-zero 脚手架 simple-admin 第一章:通过goctls生成rpc整个项目 | go-zero整合 ENT数据库orm框架
  • Ubuntu 使用 nginx 搭建 https 文件服务器
  • 团队表 -多级团队设计
  • LeetCode每日一题——2103. Rings and Rods
  • ant-design-vue form表单自定义校验规则
  • 软件工程:小组开发过程技术(VS VSS UNIX C++)
  • 算法----从字符串中移除星号
  • JVS低代码表单引擎助你打造高效表单设计流程
  • 运行项目报错error in ./node_modules/marked/lib/marked.umd.js
  • 内置对象和方法、前端基础之BOM和DOM
  • 内网穿透配置-Cpolar-Ngrok
  • Web前端自动化测试Cypress实践总结
  • Nacos本地修改编译源码2.2.3
  • 邦芒攻略:提升职场核心竞争力的7点建议
  • Android 如何在Android studio中快速创建raw和assets文件夹
  • 功率放大器功能及用途介绍