...mapState({
a: state => state.some.nested.module.a, b: state => state.some.nested.module.b })
简写带空间名称的字符串html
...mapState('some/nested/module', {
a: state => state.a, b: state => state.b })
...mapActions([ 'some/nested/module/foo', // -> this['some/nested/module/foo']() selfDefine:'some/nested/module/ bar' // -> this['some/nested/module/bar']() ])
简写带空间名称的字符串vue
...mapActions('some/nested/module', [ 'foo', // -> this.foo() 'bar' // -> this.bar() ])
1 import { createNamespacedHelpers } from 'vuex' 2 3 const { mapState, mapActions } = createNamespacedHelpers('some/nested/module') 4 5 export default { 6 computed: { 7 // 在 `some/nested/module` 中查找 8 ...mapState({ 9 a: state => state.a, 10 b: state => state.b 11 }) 12 }, 13 methods: { 14 // 在 `some/nested/module` 中查找 15 ...mapActions([ 16 'foo', 17 'bar' 18 ]) 19 } 20 }
store.dispatch
方法进行分发:
actions: { incrementAsync ({ commit }) { setTimeout(() => { commit('increment') }, 1000) } }
// 以载荷形式分发
store.dispatch('incrementAsync', { amount: 10 }) // 以对象形式分发
store.dispatch({ type: 'incrementAsync', amount: 10 })
你在组件中使用 this.$store.dispatch('xxx')
分发 action,或者使用 mapActions
辅助函数将组件的 methods 映射为 store.dispatch
调用(须要先在根节点注入 store
):vuex
import { mapActions } from 'vuex' export default { // ...
methods: { ...mapActions([ 'increment', // 将 `this.increment()` 映射为 `this.$store.dispatch('increment')` // `mapActions` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.dispatch('incrementBy', amount)`
]), ...mapActions({ add: 'increment' // 将 `this.add()` 映射为 `this.$store.dispatch('increment')`
}) } }
当你的操做行为中含有异步操做,好比向后台发送请求获取数据,就须要使用action的dispatch去完成了。其余使用commit便可。异步