是否可以从导入到组件中的单独模块调用 Vuex mapActions?
我正在尝试标准化 vue.js Web 应用程序中的一组函数。我想将它们导入到每个组件中并传递一些值到函数操作。我正在使用 vuex 来管理状态。目前,每个组件每次加载时都会调用这些函数(完全相同)。
我想将其重构为一个模块,并根据需要将其导入到每个组件中。此代码使用 mapActions 作为其功能的一部分。下面是相关的代码段:component、module、vuex action
Vue 组件:
//the imported function call
if (!this.queued){
timer.updatePage(this.pagination, this.orders);
}
模块代码(advance.js):
import { mapActions } from 'vuex';
let currentComp = {
name: 'purchase',
date: null,
start: false
}
const timer = {
...mapActions(['currentComponent']),
updatePage(pagination, order) {
currentComp.name = 'nextComponent';
this.currentComponent(currentComp);
}
}
export default timer;
Vuex 代码:
//in the actions section:
currentComponent({
commit
}, comp) {
console.log(comp);
commit('setCurrentComponent', comp);
}
//in the mutations section:
setCurrentComponent: (state, comp) => {
state.currentComponent = comp.name;
return state;
}
当组件运行导入的函数时,我得到:
vuex.esm.js?2f62:870 Uncaught TypeError: Cannot read property 'dispatch' of undefined
at Object.mappedAction [as currentComponent] (vuex.esm.js?2f62:870)
at eval (advance.js?935c:37)
当我从 this.currentComponent 中删除 this 时,我得到:
advance.js?935c:37 Uncaught ReferenceError: currentComponent is not defined
at eval (advance.js?935c:37)
提前感谢您的任何指导。
相关分类