简单的状态管理应该包括 state/view/actions
但多个组件共享状态的时,单项数据流向简洁性容易被破坏
1、多个状态依赖同一个视图
多层嵌套的组件会非常繁琐,并且实现不了兄弟组件之间传值
2、多个视图的行为需要变更同一状态
通常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝
以上的方式很脆弱
将公用的共享组件抽出,全局单例管理
单例模式的核心就一句话,对外暴露的对象是唯一的,何时何地访问对象,都是指向同一个对象
对vuex来说,他对外暴露的对象就是唯一的,这个对象里面有,state、getters、mutations、actions属性;然后无论你在哪个页面访问,操作的数据都是同一个。以此实现的跨页面共享数据状态
通过定义和隔离状态管理的各种概念并强制遵守一定的规则,代码将变得更结构化并且易维护
每个vue应用的核心就是 store(仓库) 包含应用中的大部分的状态
Vuex 和 单纯的全局对象有以下两点不同
1、Vuex 的状态存储是响应式的
2、改变store 中状态 的唯一途径是 显式的提交
state
getter
mutation
更改数据 同步
action
更改数据 异步
module