mutations在数据请求的时候是同步的,actions是异步的
action的功能和mutation是类似的,都是去变更store里的state,下面有两点不同:
- action主要处理的是异步的操作,mutation必须是同步执行,action可以是同步也可以是异步
- action改变状态,最后通过提交mutation
mutation
this.$store.commit('mutation函数名',发送到mutation中的数据); // 改变store中状态的唯一方法是提交mutation
action
this.$store.dispatch('action中的函数名',发送到action中的数据); // 不是突变直接操作state值,而是commit mutation之后由mutation操作state
const store = new Vuex.Store({
state: {
userInfo: {},
accountInfo: {},
},
mutations: {
_userInfo(state,data){
console.log(data);
state.userInfo = data;
},
_accountInfo(state,data){
console.log(data);
state.accountInfo = data;
},
},
actions: {
upDate({commit,state}){
return api.get('user/${state.userInfo.userId}/userInfo',{}).then(res=>{
commit('_userInfo',res.user);
commit('_accountInfo',res.account);
return 0;
})
}
}
})