猿问

是否可以在导出的模块中使用 Vuex mapActions

是否可以从导入到组件中的单独模块调用 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)

提前感谢您的任何指导。


慕勒3428872
浏览 210回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答