【发布时间】:2021-04-06 06:24:40
【问题描述】:
我想知道我们是否可以在 Vuex 中使用嵌套突变/动作(如果我的英语不好,请提前抱歉)
我有这样的代码:
...
mutations: {
SET_AUTH: (state) => {
state.auth = true
},
SET_PROFILE: (state, payload) => {
state.profile = payload
}
},
actions: {
userLogin: ({ commit }, payload) => {
return new Promise((resolve, reject) => {
Axios.post('/login', payload)
.then(res => {
commit('SET_AUTH')
commit('SET_PROFILE', res.data.profile)
resolve(res)
})
.catch(...)
})
}
}
现在,当事情变大时,我必须向上滚动 2-3 次才能搜索是否已经设置了我需要的突变/动作,因为这一切都使用 'SET' 词,我知道我可以反转这个词并按降序 (AZ) 对它们进行排序,例如“AUTH_SET”、“PROFILE_SET”等...
但我有一个想法,将其放入适合其位置的对象中
// Example:
...
mutations: {
user: {
SET_AUTH: (state) => {
...
},
SET_PROFILE: (state, payload) => {
...
}
}
},
actions: {
user: {
login: ({ commit }, payload) => {
//
},
...
}
}
然后当我发送一个动作时,例如:
this.$store.dispatch('user.login', ...);
遇到错误:未捕获的错误:[vuex] 操作应该是具有“处理程序”功能的函数或对象,但模块“用户”中的“actions.user”是 {}。
这甚至可能吗?因为我喜欢这种方式,所以让我的代码更干净
提前致谢
【问题讨论】: