Vuex---dispatch 和 commit 的区别与使用

2020-03-10  本文已影响0人  inyourface

区别:

1.Action提交的是mutation,而不是直接变更状态,可以包含任意的异步操作。
2.dispatch推送一个action。

说实话,官网看的感觉不是很懂。还是先说明这两个函数调用的都是哪个里面的方法吧。

1.dispatch 异步操作 this.store.dispatch('actions的方法', arg), 调用actions里的方法。 2.commit 同步操作 this.store.commit('mutations的方法', arg),调用mutations里的方法。

使用方法步骤:

const user = {
  state: {
    token: ''
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token ="test " +token 
    },
  },
  actions: {
    // 登录
    Login({commit}, userInfo) {
      return new Promise((resolve, reject) => {
        login(userInfo.account, userInfo.password).then(aa => {
          if(aa.status==200){
            const tokenSuccess = aa.data.token.tokenValue
            commit('SET_TOKEN', tokenSuccess )
            document.cookie=`cookie地址`;
            token="test"+tokenSuccess ;
            //setToken("test" +token)
            resolve();
          }
          
        }).catch(error => {
          console.log("登录失败")
          reject(error)
        })
      })
    },
  }
}
toLogin() {
            this.$store.dispatch('Login',arg).then(() => {
               
            })

在上面代码中,在mutations中使用箭头函数更改state中的token数据。然后在actions中Login函数中通过commit('SET_TOKEN', tokenSuccess )来进行调用此函数并传参,才能在store存储成功。在需要的组件中使用this.$store.dispatch('actions方法')来调取store里的对应方法,从而更新。

上一篇下一篇

猜你喜欢

热点阅读