===========================================================================
-
State:状态,姑且可以当做就是 data 中的属性
-
View:视图层,可以针对 State 的变化,显示不同的信息
-
Actions:这里的 Actions 主要是用户的各种操作,点击、输入等等,会导致状态的改变
代码示例:
-
counter 需要某种方式被记录下来,也就是 State
-
counter 目前的值需要被显示在界面中,也就是 View
-
界面发生某些操作时(如用户点击,或是用户的 input)需要去更新状态,也就是 Actions
==========================================================================
Vue 已经实现了单界面的状态管理,但是如果是多个界面呢?
-
多个界面都依赖同一个状态:一个状态改了,多个界面需要进行更新
-
不同界面的 Actions 想修改同一个状态
Vuex 背后的思想:
-
将共享的状态抽取出来,统一进行管理
-
之后每个视图,需要按照规定好的某种方法,进行访问和修改操作
Vuex 状态管理图例:
============================================================================
在 store/index.js 中管理状态:
import { createStore } from "vuex";
export default createStore({
state: {
counter: 0
},
mutations: {
increment(state) {
state.counter++;
},
decrement(state) {
state.counter--;
}
},
actions: {},
modules: {},
getters: {},
});
在 main.js 中将 store 挂载到 Vue 实例中
在其他 Vue 组件中,通过 this.$store
获取到 store 对象
-
通过
this.$store.state
来访问状态 -
通过
this.$store.commit('xxx')
来执行 mutations 中的方法,从而修改状态
为了使 Vuex 可以更明确的追踪状态的变化,不要直接改变
store.state.count
的值,通过 mutations 中的方法来修改 state 中的状态。
==============================================================================
如果状态信息是保存到多个 store 对象中的,那么之后的管理和维护等等都会变得特别困难,所以 Vuex 使用了单一状态树来管理应用层级的全部状态、
单一状态树能够让我们以最直接的方式找到某个状态的片段,而且在之后的维护和调试过程中,也可以非常方便的管理和维护。
==========================================================================
我们需要从 store 中获取一些 state 变异后的状态,比如下面的 store 中:
获取学生年龄大于20的个数:
-
在组件中使用 computed
-
使用 Vuex 的 getters:
如果我们已经有了一个获取所有年龄大于 20 岁学生列表的 getters,那么代码可以这样来写
getters 默认不能传递参数,如果想要传递参数,需要让 getters 本身返回另一个函数;
比如上面的案例中,我们希望根据 ID 获取用户的信息:
===========================================================================
Vuex 的 store 状态的更新唯一方式:提交 Mutation
Mutation 主要包括两部分:
-
字符串的事件类型 (type)
-
一个回调函数 (handler),该回调函数的第一个参数就是 state
mutation 的定义方式:
通过 mutation 更新:
在通过 mutation更 新数据的时候,有时候需要希望携带一些额外的参数
- 参数被称为 mutation 的 载荷 (Payload)
示例代码:
多个参数的传递以对象的形式进行,也就是 payload 是一个对象:
上面的通过 commit 进行提交是一种普通的方式
Vue 还提供了另外一种风格,它是一个包含 type 属性的对象
Mutation 中的处理方式是将整个 commit 的对象作为 payload 使用,所以代码没有改变:
当项目增大时,Vuex 管理的状态越来越多,需要更新状态的情况越来越多,意味着 Mutation 中的方法越来越多。方法过多,导致使用者需要花费大量的精力去记住这些方法,甚至是多个文件间来回切换,查看方法名称,甚至如果不是复制的时候,可能还会出现写错的情况
在各种 Flux 实现中,一种很常见的方案就是:使用常量替代 Mutation 事件的类型,我们可以将这些常量放在一个单独的文件中,方便管理
创建一个文件:mutation-types.js,并且在其中定义我们的常量
定义常量时可以使用 ES2015 中的风格,使用一个常量来作为函数的名称:
store 中用常量字符串来定义函数:
组件中使用常量字符串调用 store 的 mutations 更改 state:
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
如果你也爱了,点击这里免费下载:“K8S+Docker”学习指南
mg-51DrZHRG-1628601121881)]
[外链图片转存中…(img-DcK722BI-1628601121883)]
[外链图片转存中…(img-yy3wmcbo-1628601121885)]
[外链图片转存中…(img-YUrrB9eR-1628601121887)]
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
如果你也爱了,点击这里免费下载:“K8S+Docker”学习指南