vuex - 学习日记

简介: 一、简单理解简单说vuex,就是用来管理组件状态的数据,并且能在你可掌控的范围下增删改查这些数据。store容器 , state状态二者关系(包含):以前我也把vuex里边的state看成是一个全局对象的感觉,就像全局变量所有页面都能用一样,所有组件都能使用它。

一、简单理解

简单说vuex,就是用来管理组件状态的数据,并且能在你可掌控的范围下增删改查这些数据。

store容器 , state状态

二者关系(包含):

以前我也把vuex里边的state看成是一个全局对象的感觉,就像全局变量所有页面都能用一样,所有组件都能使用它。

但是他和全局对象的区别有两点,概括来说:

1.  Vuex里边的数据是和使用它的视图,关系密切,心有灵犀。属于藕断丝还连的亲密。

  改变了state里边的数据,视图里边的展示就能跟着改变。是不是很强大。

  而全局对象的改变也能修改视图的展示。但是他俩之间需要一个媒介,你得自行监控全局对象的改变来修改展示。

2. 鉴于二者关系密切,Vuex是不能你想动就动的,支配他得需要专门的“法物”--mutations的commit

 

二、核心概念:

1)state  概括如下:

“单一状态树”

一个项目中只能有一个

是所有组件公用的数据源

 Vuex 的状态存储是响应式的

如何在 Vue 组件中展示状态:从 store 实例中读取状态并在计算属性中返回这个状态

1 computed: { 
2     count () { 
3         return this.$store.state.count 
4     } 
5 }

 

当store.state内状态值变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。

 

2)getter

可以认为是 store 的计算属性

getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。就像计算属性一样

 

3)mutation

更改Vuex 的 store 中的状态的唯一方法是提交 mutation

  官网文:“每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。

  这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数”

这句话的代码解释如下:

源码与解析对比图:

 

state获取store中的状态数据

payload-载荷多数情况下,载荷应该是一个对象,这样可以包含多个字段并且记录的 mutation 会更易读;

 

事件注册: 

1 store.commit(‘state’,{
2 
3   payload: ‘载荷’
4 
5 });

 

4)action

由于mutation必须是同步的,这就给了action成长的机会,

因为action虽然和mutation差不多,但是它支持异步啊!

而且action,是通过提交(操控)mutation来更改state的状态,而不是自己上去直接搞,可以说是很机智的了。

 

接受参数 - context 对象: 与 store 实例具有相同方法和属性。

  也就是说可以拿他当store用,或者也可以直接将其命名为store。

  但注意,他确不是store本尊

 

分发 Action:

 

 this.$store.dispatch('mutationFunctionName')

 

 

 

action的高级之处:我们可以在 action 内部执行异步操作

 1 action(context) {
 2 
 3     //异步操作
 4     setTimeout(() = >{
 5 
 6         //变更状态
 7         context.commit('mutationFunName',value)
 8 
 9     })
10 
11 }

 

store.dispatch:

可以处理被触发的 action 的处理函数返回的 Promise

store.dispatch 仍旧返回 Promise

 

三、关键记忆点:

*  store 中的状态是响应式的

*  最好提前在你的 store 中初始化好所有所需属性。

*  调用 store 中的状态:仅需要在组件的计算属性中返回即可,

  因为当store.state内状态值变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。

*  触发变化:在组件的 methods 中提交(commit) mutation

*  将所有的状态放入 Vuex? 错,如果有些状态严格属于单个组件,最好还是作为组件的局部状态。

*  mutation 必须是同步函数,比如store.commit('increment') ,

  提交这一下,那么任何由 "increment" 导致的状态变更都应该在此刻完成。而不能再执行回调函数啥的了。

 

2018-04-07  17:49:23

目录
相关文章
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
10840 4
|
资源调度 JavaScript 测试技术
vite的项目,使用rollup打包的方法
vue-cli 自带的是 webpack 的打包方式,打出的包体积有点大,而 vite 自带的是 rollup 的打包方式,这种方式打包的体积就非常小,官网也有一些使用说明,所以学会之后还是比较很方便的。
vite的项目,使用rollup打包的方法
|
存储 弹性计算 人工智能
阿里云文件存储NAS通用型、极速型和文件存储CPFS有什么区别?
阿里云文件存储NAS极速型NAS低时延,适合企业级时延敏感型核心业务;文件存储CPFS拥有高吞吐和高IOPS,适合高性能计算业务;通用型NAS大容量、高性价比、弹性扩展,支持低频介质,适合通用类文件共享业务。
2952 0
阿里云文件存储NAS通用型、极速型和文件存储CPFS有什么区别?
|
12月前
|
监控 前端开发 JavaScript
HarmonyOSNext 崩溃急救指南:全局监听+同步退出 = 优雅保命!
本文介绍了HarmonyOS Next中Ark Ts的错误管理技巧,通过全局监听和同步退出机制实现应用崩溃保护。涵盖单线程、Promise及主线程卡死监控方案,并提供实战代码与避坑指南,帮助开发者优雅处理异常,保障用户体验。
378 65
|
11月前
|
人工智能 Cloud Native Java
2025 年 Java 应届生斩获高薪需掌握的技术实操指南与实战要点解析
本指南为2025年Java应届生打造,涵盖JVM调优、响应式编程、云原生、微服务、实时计算与AI部署等前沿技术,结合电商、数据处理等真实场景,提供可落地的技术实操方案,助力掌握高薪开发技能。
495 2
|
6月前
|
存储 人工智能 数据库
阿里云“云工开物”计划:高校学生及教师权益解读参考
“云工开物”是阿里云面向全国高校学生及教师用户推出的专项活动,以云计算和AI技术支持AI时代高校人才培养和科研创新。通过学生认证的高校学生,可领取300元无门槛优惠券。用户是国内高校/科研机构的教师(含博士后)用户完成教师身份认证,在申请表单中说明应用场景并通过审核,可领取阿里云公共云产品(特殊商品除外)五折优惠,订单原价总量不超过40万元。本文为大家解析“云工开物”计划下高校学生及教师的权益规则,并详细解答常见问题,帮助师生更好地理解和享受这一权益。
1039 6
|
边缘计算 运维 监控
5G落地没那么简单!细扒部署挑战与硬核解决方案
5G落地没那么简单!细扒部署挑战与硬核解决方案
485 30
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
1203 33
The Past, Present and Future of Apache Flink
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
从五子棋到DeepSeek:揭开模式匹配的奥秘
本文通过五子棋AI与大语言模型DeepSeek的对比,探讨了模式匹配技术在不同领域的应用与相似性。从五子棋的棋局分析到自然语言处理,模式匹配构成了人工智能决策的核心机制。文章揭示了AI如何通过识别数据中的规律进行预测与生成,并展望了该技术在未来医疗、金融、自动驾驶等领域的广泛应用前景,展现了从简单游戏到智能世界的演进路径。
483 2
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
1078 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡