美文网首页
Vuex---dispatch 和 commit 的区别与使用

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

作者: inyourface | 来源:发表于2020-03-10 13:27 被阅读0次

    区别:

    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里的对应方法,从而更新。

    相关文章

      网友评论

          本文标题:Vuex---dispatch 和 commit 的区别与使用

          本文链接:https://www.haomeiwen.com/subject/zxzidhtx.html