# Vuex 文档初探(一): 为何需要 Vuex
当一个 Vue 应用的规模越来越大时, 我们总是会遇到这样一种情况: 组件之间有一些状态是需要共享的. 于是我们会使用props
+$emit
的方法来解决. 在小项目里这是可行的, 但是在大型项目里, 重复地使用则会导致许多问题(比如使组件变得臃肿, 使得可维护性变得困难). 因此衍生出了状态管理工具. 我们把需要共享的数据放在一个全局的环境里. 并且它是唯一的(single source of truth), 我们叫它store
, 放在store
里的数据称为state
. 组件里的数据都要从store
里的state
获取, 组件不能修改状态, 它只能向store
提交修改请求, 由store
修改. 又因为store
里的state
都是响应式(reactive), 所以会触发 UI 的重新渲染, 新的数据会渲染到组件里去. 这就是状态管理工具的核心功能. Vue 推出了官方的状态管理工具: Vuex.接下来我们将深入 Vuex 的具体使用.