state
Vuex中的state可以理解为Vue的data, 他的变量只能通过mutations来修改。
getter
有时候需要从 store 中的 state 中派生出一些状态,例如对列表进行过滤并计数, 返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
mutation
事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方. mutation 必须是同步函数,因为devtools 都需要捕捉到前一状态和后一状态的快照,如果是异步时候变更,Vuex并不知道,这样Vuex就无法实现对state的追踪了。
actions
就是为了解决mutations不能包含异步代码而设计的。我们可以这样理解actions:它封装了一些异步操作,这些异步操作的结果将用于修改state的值,当它得到这些值时,会通过提交mutations来修改state的值。
modules
是为了对庞大的store进行模块化分解而设计的。 假如某个应用极其复杂,有上百个共享变量需要在state维护,与每个共享变量相关的getters、mutations、actions更是数不胜数,那么这个store的庞大程度可想而知。另外,假如store中的state由不同的开发人员维护,还可能发生命名冲突、意外修改等严重的问题。
为此,Vuex提出将state的变量按照一定逻辑划分成不同的模块,单独维护。每个划分出来的模块,就称为一个module。它包含自己专有的state、getters、mutations、actions,甚至可以继续定义自己的子模块modules