vuex 使用文档小结篇

2020-06-16 05:41:34易采站长站整理

      },
    mutations: {
      increment (state) {
        state.count++
      }
    },
    actions: {
        increment (context){
          context.commit('increment')
          }
        }
    })

Action 函数接受一个与store 实例具有相同方法和属性的context 对象,因此你可以调用 context.commit 提交一个mutation,或者通过 context.state 和context.getters 来获取 state 和 getters 当我们在之后介绍到Modules时,你就知道 context 对象为什么不是store 实例本身了。   


actions: {
      increment({commit}){
        commit('increment')
      }
    }

分发 Action

    Action 通过 store.dispatch 方法触发:     


store.dispatch('increment')

    我们可以在 action 内部执行异步操作。   


 actions: {
      incrementAsync({commit}){
        setTimeout(() => {
          commit('increment')
        },1000)
        }
      }

  Actions 支持同样的载荷方式和对象方式进行分发    


 // 以载荷形式分发
    store.dispatch('incrementAsync',{
      amount:10
    })
    // 以对象形式分发
      store.dispatch({
        type: 'incrementAsync',
        amount:10
      })

 在组件中分发 Action

    你在组件中使用

this.$store.dispatch('xxx') 
分发 action,或者使用map Actions辅助函数将组件的methods 映射为store.dispatch 调用   


import {mapActions } from 'vuex'
      export default{
        methods:([
          'increment' // 映射 this.increment() 为 this.$store.dispatch('increment')
        ])
      mapActions({
          add: 'inctement' // 映射 this.add() 为 this.$store.dispatch('increment')
        })
      }

组合 Actions

    Action 通常是异步的,那么如何知道 action 什么时候结束。

    你需要明白 store.dispatch 可以处理被处触发的action 的回调函数返回的Promise并且 store.dispatch 仍旧返回Promise