Javascript 在Vuex中导入可重用操作

Javascript 在Vuex中导入可重用操作,javascript,vue.js,vuejs2,vuex,nuxt.js,Javascript,Vue.js,Vuejs2,Vuex,Nuxt.js,我正在从事一个NUXT项目,我发现自己正在将相同的操作复制到多个存储/模块中。因此,我已将操作提取到一个单独的文件中,现在将其导入到模块中。这很有效,但我偶尔需要一个不是样板的额外动作。如何导入样板操作,并在模块中具有自定义操作 标签模块: 从“Vue”导入Vue; 从“./utils/Actions.js”导入全局动作; 导出常量状态=()=>({/*已删除*/}) 导出常量动作=全局动作; //需要更加灵活的操作来包括非样板操作 我不确定这是否重要,但这里是utils/Actions.js

我正在从事一个NUXT项目,我发现自己正在将相同的操作复制到多个存储/模块中。因此,我已将操作提取到一个单独的文件中,现在将其导入到模块中。这很有效,但我偶尔需要一个不是样板的额外动作。如何导入样板操作,并在模块中具有自定义操作

标签模块:

从“Vue”导入Vue;
从“./utils/Actions.js”导入全局动作;
导出常量状态=()=>({/*已删除*/})
导出常量动作=全局动作;
//需要更加灵活的操作来包括非样板操作
我不确定这是否重要,但这里是utils/Actions.js,它只是模块中典型的标准“导出默认值{}”

导出默认值{
全部({commit},全部){
all.data.forEach(项=>{
提交(“添加”,项目);
});
},
异步列表({commit,state,getter,dispatch}){
/*刷新重置状态*/
提交(“同花顺”);
/*使用存储库设置进行api调用*/
设params=getters.params;
const results=wait this.$repositories[state.type].index(params);
const id=results.data.map(item=>item.id);
让page=state.page;
发送(“全部”,结果);
/*添加将页面映射到索引的百科全书*/
提交(“SET_REFERENCE”,{page,ids});
提交(“totalItems”,results.meta.total);
},
} 
理想情况下,我认为模块操作应该如下所示:

导出常量操作={
list(){return globalaactions.list}
非样板操作({commit})
}

我非常确定我将需要改变导入globalActions的方式,我的“理想”操作语法是错误的,但我不确定我需要调整什么

要合并导入的操作和自定义操作,可以通过以下方式合并这两个操作:

export const actions = { 
    ...globalActions, 
    nonBoilerPlateAction({commit}) { 
      commit('something') 
    } 
}

虽然您使用的重用模块的方式很好,但我建议您改用。这样,您创建的所有模块都可以轻松重用,而无需将它们导入任何其他文件。您可以轻松地从其他模块访问其他模块

如果您询问如何合并导入的操作和自定义操作,您可以通过以下方式合并这两个操作:export const actions={…globalaactions,non-boilerplateaction({commit}){commit('something')}}谢谢@Onwuka。你想将其作为答案发布吗?我现在正在使用名称空间,但在每个名称空间中都有一组我经常使用的操作,这是我想在globalAction文件中设置的。是的,你可以从其他模块发送操作。见:和