区别:
1.Action提交的是mutation,而不是直接变更状态,可以包含任意的异步操作。
2.dispatch推送一个action。
说实话,官网看的感觉不是很懂。还是先说明这两个函数调用的都是哪个里面的方法吧。
1.dispatch 异步操作 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里的对应方法,从而更新。