在组件中导入方法
import {mapState,mapGetters,mapActions,mapMutations} from 'vuex'
mapState方法的使用
注意:这里的…是ES6语法,表示将该的对象所有属性展开,放入其所在上级对象中
......
computed:{
//借助mapState生成计算属性,从Vuex中的state对象中读取数据(对象写法)
...mapState({sum:'sum',school:'school',subject:'subject'})
//借助mapState生成计算属性,从Vuex中的state对象中读取数据(数组写法)
...mapState(['sum','school','subject']),
}
配置完毕之后,当组件访问state中的数据,可以由原来的$store.state.sum
等价为sum
,其他数据以此类推
mapGetters方法的使用
......
computed:{
//借助mapGetters生成计算属性,从Vuex中的getters对象中读取数据(对象写法)
...mapGetters({
bigSum:'bigSum',
}),
//借助mapGetters生成计算属性,从Vuex中的getters对象中读取数据(数组写法)
...mapGetters(['bigSum']),
}
配置完毕后,当组件访问getters中的数据,可以由$store.getters.bigSum
替换为bigSum
mapActions方法的使用
帮助我们生成与actions对话的方法,即包含$store.dispatch(xxx)
的函数
注意:需要传递参数时,需要在组件进行方法调用时传参,例如按钮点击事件:
<button @click="incrementOdd(value)"></button>
methods:{
//用于取代 $store.dispatch('incrementOdd'),对象写法
...mapActions({
incrementOdd : 'incrementOdd',
incrementWait : 'incrementWait'
}),
//数组写法
...mapActions(['incrementOdd','incrementWait'])
}
mapMutations方法的使用
帮助我们生成与mutations对话的方法,即包含$store.commit(xxx)
的函数
注意:需要传递参数时,需要在组件进行方法调用时传参,例如按钮点击事件:
<button @click="increment(value)"></button>
methods:{
...mapMutations({
increment:'ADD',
decrement:'DECREMENT'
})
}