在vue.$store中actions用于异步,一直不是很了解,看到别人的代码都是在actions中进行异步操作。
假如下面代码是在登录页面点击登录后,将获取的登录信息存到vuex中:
const store = {
state: {
loginInfo: () => null,
},
mutations: {
initLoginInfo(state, data) {
state.loginInfo = data
},
},
actions: {
getLoginInfo({commit}) {
api.login()
.then(res => {
commit('initLoginInfo', res)
})
},
},
}
和我在Login.vue中直接调用api.login(),然后直接使用mutations,有什么区别吗?如下代码:
handleLogin() {
// 使用actions将结果存入loginInfo
// this.$store.dispatch('getLoginInfo')
api.login()
.then(res => {
// 使用mutations将结果存入loginInfo
this.$store.commit('initLoginInfo', res)
})
}
没有区别
用actions可以方便统一管理吧。更加利于复用。
如果使用actions 那么只需要在调用请求的时候,调用一个actions
但是如果用你的 是不是还要import api 然后在调用 mutations
估计也就这样的区别了