vuex是什么?
对于vue来说,整个应用是个组件树。每个组件都有自己的状态(state)或者是数据(data),比如一个用户名,可能很多组件都需要它做渲染或判断等等。所以第一个要实现的是:
- 对于很多组件依赖的数据或状态,我们只需要一份即可,当它变化时,依赖它的组件都能变化。
另外一个情况时,既然很多组件都依赖这个状态,也可能有很多组件想要修改这个状态,所以第二个要实现的是: - 对于很多组件都要改变的状态,只需要一份修改逻辑实现,其它组件只需要说明我要修改状态就好。
实现:对于第一个实现,一份?那我们整个全局对象就可以实现所有组件渲染了,这也是变量的意义。但是还要实现当它变化时,所有依赖它的组件自动更新变化,这直接想到了vue的双向绑定。对于第二个实现,我们假想有个管家,每个组件通知这个管家要改变哪个状态就好了。这中间有个通知机制。现在看下vuex官网的说明。
每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:
Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
所以我们初步把它理解成特殊的全局对象。