Vuex报错unknown action type: updateDepartments 原因排查求助
问题原因
Vuex的dispatchAPI用于触发actions配置中的方法,commitAPI才用于触发mutations配置中的方法。你触发updateDepartments时报错的核心逻辑是:
- 你仅在mutations中定义了
updateDepartments方法,未在actions中定义同名方法,调用dispatch时无法找到对应动作就抛出异常 updateTeams可以正常运行,是因为你已经在actions配置中定义了同名的updateTeams方法,内部正常提交了对应的mutation,所以没有报错。
解决方法
你可以根据业务需求二选一:
- 如果你不需要异步处理,只是直接修改state,把调用方式从
dispatch改为commit即可bus.$on('loadDepartments', (data) => { this.$store.commit('updateDepartments', data) }) - 如果你需要封装异步逻辑、多状态联动操作,在store的actions配置中补充
updateDepartments定义即可// store.js actions: { // 原有其他action updateTeams({ commit }, payload) { commit('updateTeams', payload) }, // 新增对应action updateDepartments({ commit }, payload) { commit('updateDepartments', payload) } }
额外排查点
如果你的store拆分了多模块,且updateDepartments所在的模块开启了namespaced: true,调用时需要加上模块名前缀:
// 假设方法在organization模块下 this.$store.dispatch('organization/updateDepartments', data)
内容的提问来源于stack exchange,提问作者Hogsmill
相关产品推荐
相关产品推荐

