...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便可。異步