简介
在上一章中,您学习了如何使用事件总线模式来帮助解决一个重要问题:在复杂且高度嵌套的组件集之间来回通信事件。事件总线模式提供了一个简单的发布和子系统,通过该系统,任何组件都可以发出事件,并且任何组件也可以侦听该事件。虽然针对这个问题编写自己的解决方案是保持编码技能敏锐的好方法,但在这种情况下,最好使用 Vue 社区中已经使用的已开发且经过充分测试的解决方案 — Vuex(https://vuex.vuejs.org/):

Vuex 是 Vue 生态系统的核心部分,提供了我们在上一章中已经构建的内容以及更多内容。 让我们从高层次看一下 Vuex 的主要特性。
State
Vuex 最重要的方面是它所代表的状态或数据。这是所有组件都可以依赖的单一事实来源。当状态发生变化时,每个使用该状态的组件都可以确保其副本始终保持同步。想象一个可以让您编辑博客条目的 Vue 应用程序。该存储可以包含博客条目本身以及您正在编辑的当前博客条目的值。当博客条目在一个地方编辑时,使用它们的任何其它地方都会立即更新。
Getters
虽然 Vue 可以直接从 Vuex 实例读取状态数据,但有时您可能需要为数据本身提供额外的逻辑或抽象。与 Vue 为虚拟或派生数据提供计算属性的方式非常相似,getter 为需要在返回数据之前操作数据的情况提供了状态抽象。回到我们之前处理博客条目的示例,想象一个按视图返回顶部博客条目的 getter。getter 抽象了博客条目的 “流行程度(popular)” 逻辑,并让您将来可以轻松更改该逻辑。
Mutations
在 Vuex 中使用状态数据的组件永远不会直接修改该数据。相反,组件可以执行突变(mutation)。将其视为来自组件的命令,让 Vuex 执行对其状态的更改。通过使用突变将更改包装到状态,Vuex 可以确保使用该状态的每个组件都保持最新的更改。