一、引入Vuex
前提注意点:
1.如果想要在子组件中使用父组件中的数据, 那么必须通过父组件传递
2.如果想要在子组件中使用祖先组件中的数据, 那么就必须一层一层的传递
3.兄弟组件之间不能直接传递数据, 如果兄弟组件之间想要传递数据, 那么就必须借助父组件
虽然通过借助父组件能够实现兄弟组件之间的数据传递, 但是这种方式非常的复杂, 非常的不推荐
那么当前在企业开发中我们遇到了两个问题:
1.如果想要在子组件中使用祖先组件中的数据, 那么就必须一层一层的传递(非常麻烦)
2.兄弟组件之间不能直接传递数据, 如果兄弟组件之间想要传递数据, 那么就必须借助父组件(非常麻烦)
解决方案: 使用Vuex
二、什么是Vuex?
vuex 是 Vue 配套的 公共数据管理工具,它可以把一些共享的数据,保存到 vuex 中,
方便整个程序中的任何组件直接获取或修改我们的公共数据。
注意点:
只有需要共享的才放到vuex上, 不需要共享的数据依然放到组件自身的data上。
二、如何使用vuex,实现共享数据
1、导入Vuex(注意点:在导入Vuex之前必须先导入Vue)
2、创建Vuex对象
3、在祖先组件中添加store的key保存Vuex对象
4、在使用Vuex中保存的共享数据的时候, 必须通过如下的格式来使用
this.$store.state.msg中this.$store表示的就是当前的组件,组件所含有的state属性,因为这个属性实际上是一个对象,所以又用.msg的方式进行访问。
三、用Vuex修改数据
注意点:在Vuex中不推荐直接修改共享数据
结果正如上方所示,当点击第一个儿子的增加按钮时,由于修改的是共享的数据,导致二儿子的结果也会增加一,所以当出现问题时,无法找出是哪一个儿子所产生的。
解决办法:
在Vuex创建时,增加一个mutations对象,用于保存修改共享数据的方法
注意点:在执行mutations中定义的方法的时候,系统会自动给这些方法传递一个state参数,state参数就保存了共享的数据
四、 Vuex-getters
getters的作用和组件中的computed的作用是一样的,起到了缓存作用,当数据已经加载过一次以后,重复利用时不会进行二次加载。