1介绍
Vuex
Vuex是一个专为vue应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应规则保证状态以一种可预测的方式发生变化。
Vue的状态管理包含以下几个部分:
- state(data) 驱动应用的数据源
- view(template) 以声明方式将state映射到视图
- actions(method) 响应在view上的用户输入导致的状态变化
但应用中遇到多个组件状态共享时,单向数据流的简洁性很易被破坏
- 多个视图依赖于同一状态
- 来自不同视图的行为需要变更同一状态
对于1 传参多层嵌套很频繁,且对兄弟组件间传递无奈 对于2 父组件直接引用或者通过事件来变更和同步状态拷贝会让单数据流状态很难维持
vuex借鉴了Flux、Redux,其把组件的共享状态抽取出来,以一个全局单例模式管理,让组件都能获取状态或者触发行为改变状态。通过定义和隔离状态管理中的各种概念并强制遵守,使得项目易维护。
比起Redux,vuex多了一层mutation,这是改变vuex中store的唯一方法,一般地,同步任务类型的状态改变都写在mutation中。而action用来包含异步操作,当然,其中也可以提交mutation。看似复杂,但通过这样的拆分,我们可以更好地把业务逻辑和状态改变进行区分,更好地组织代码结构。
核心思想
vuex核心就是store:
- vuex的状态存储是响应式的。当vue组件从store中读取状态时,若store中状态发生变化,那么相应组件也会得到更新
- 不能直接改变store中状态。须显式提交(commit)mutation,这样方便跟
