我们在开发应用时,存在许多子组件需要响应同一个数据变化的情况,一般我们是把这个数据维护在这些子组件的共同父组件上,通过 props
向下传递,但是当项目变得复杂时,这种方法会显得很繁琐且难以维护。
当这种情况变得越来越多时,就要考虑在项目中引入状态管理了。
状态管理和普通的 props
传值有什么区别呢?
1 | <div id="app"> |
这是通过 props
传值的方式,在父组件上维护 count
属性,然后传递给三个子组件 counter
,当调用方法使得 count
的值改变时,子组件自动重新渲染。
1 | <div id="app"> |
这个实现就有点像状态管理了,父组件不再给子组件传值,counter
自己去状态仓库去获取需要的值,父组件的方法直接修改状态仓库中的属性。
以下是简单实现:
1 | const state = new Vue({ |
这样已经和 Vuex 非常接近了,可以再进一步完善:
1 | function createStore ({ state, mutations }) { |
以上基本就是 Vuex 核心部分的原理。