根据我的理解,VUEX是一个开发模式或者说框架。就像PHP有thinkPHP,Java有spring等。vuex通过状态(数据源)集中管理驱动组件的变化
vuex有五个属性,分别是以下几点:
一、state
state 为单一状态树,在 state 中需要定义我们所需要管理的数组、对 象、字符串等等,只有在这里定义了,在 Vue.js 的组件中才能获取你定义的这 个对象的状态。
二、getter
getter 有点类似 Vue.js 的计算属性,当我们需要从 store 的 state 中派生出一些状态,那么我们就需要使用 getter,getter 会接收 state 作为第 一个参数,而且 getter 的返回值会根据它的依赖被缓存起来,只有 getter 中 的依赖值发生改变的时候才会被重新计算。
三、mutation
更改 store 中 state 状态的唯一方法就是提交 mutation,就很类似事件。每个 mutation 都有一个字符串类型的事件类型和一个回调函数,我们需要改变 state 的值就要在回调函数中改变。我们要执行这个回调函数,那么我们需要执行一个相应的调用方法$store.commit。
四、action
action 可以提交 mutation,在 action 中可以执行 $store.commit,而且 action 中可以有任何的异步操作。在页面中如果我们要用这个 action, 则需要执行 $store.dispatch
五、module
module 其实只是解决了当 state 中很复杂臃肿的时候,module 可以将 store 分割成模块,每个模块中拥有自己的 state、mutation、action 和 getter
vuex的特点我总结以下几点:
- 应用级的状态集中放在store里面
- 改变状态的方式是提交mutations,这里是同步的
- 异步逻辑封装放在action中