Vuex 是为了保存 组件之间共享数据而诞生的,如果组件之间有需要共享的数据,可以直接挂载到
vuex中,不必通过父子之间传值,如果组件的数据不需要共享,此时这些不需要共享的私有数据,就不要放在vuex中,
只有需要共享的数据,才有权放到vuex中,组件中内部私有数据,放在data中即可,props data vuex 的区别
结论:vuex是一个全局共享的储存区域,相当于一个仓库 store
案例: 创建state数据,和mutations 里面的方法
export default new Vuex.Store({ state: { count:5 }, mutations: { increment(){ //传参和不传参的两种写法 this.state.count++ }, subtraction(state){ state.count-- } }, actions: { } })组件调用store的数据和方法
<template> <div id="counter"> <input type="button" value="减" @click="subtraction"> <input type="text" v-model="$store.state.count"> <input type="button" value="加" @click="add"> </div> </template> <script> export default { name:"counter", methods:{ add(){ this.$store.commit('increment') }, subtraction(){ this.$store.commit("subtraction") } } } </script>上述就可以实现通过store进行加减操作
还是上面那个例子
subtraction(state,c){ state.count-=c } //调用 和 子组件向父组件传参数有点类似,mutations中函数传参最多两个,(state ,其他) subtraction(){ this.$store.commit("subtraction",5) } 虽然只能传两个,但是最后一个可以传对象 mutations: { increment(state, obj) { this.state.count += (obj.a + obj.b) } }, 调用 add(){ this.$store.commit('increment',{a:5,b:7}) }, 这样每次加的就是5+7 = 12,只是告诉这样一个思想,可以传多种数据类型