有五种,分别是State、Getter、Mutation、Action、Module。
State
Vuex使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此他便作为一个“唯一数据源(SSOT)”而存在。这也意味着,每个应用将仅仅包含一个store实例。单一状态树让我们能够直接定位任一特定的状态片段,在调试过程中也能轻易的取的整个当前应用状态的快照。
State属性是Vuex的单一状态树
Getter
有时候我们需要从store中的state中派生出一些状态,例如对列表进行过滤并计数
Getter类似于Vue的computed对象。是根据业务逻辑来处理State,使得生成业务所需的属性
Mutation
更改vuex的store中的状态的唯一方法是提交mutation。vuex中的mutation非常类似于事件:每个mutation都有一个字符串的事件类型(type)和一个回调函数(handler)
Mutation是唯一用来更改vuex中状态的方法
Action
Action类似一mutation,不同在于:
1.Action提交的是mutation,而不是直接变更状态
2.Action可以包含任意异步操作
Action是用来解决异步操作而产生的,他提交的是mutation
Module
由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变的非常复杂时,store对象就可能变的非常臃肿。为了解决以上问题,vuex允许我们将store分割成模块(module)、每个模块拥有自己的state、mutetion、action、getter、甚至是嵌套子模块——从上至下进行同样方式的分割
Module是将vuex模块化的对象,目前是更好的维护