如何合并来自多个文件的命名导出并导出为一个对象

125*_*748 3 javascript import ecmascript-6 redux

我有很多动作创建器,我试图将它们组织成几个不同的文件。每个单独的文件都有导出的功能,如:

export function addData(data) {
  return {
    type: 'ADD_DATA',
    data
  }
}
Run Code Online (Sandbox Code Playgroud)

在将它们分成不同的文件之前,它们的导入方式如下:

import { addData } from './actions/actionCreators'
Run Code Online (Sandbox Code Playgroud)

但是现在的结构就像

??? actions
? ??? actionsCreators1.js
? ??? actionsCreators2.js
? ??? index.js
Run Code Online (Sandbox Code Playgroud)

我想将它们合并到索引文件中,并按照最初命名的方式导出它们。我尝试过的是:

动作/ index.js

import * as actions1 from './actionCreators1'
import * as actions2 from './actionCreators2'

export default {
  ...actions1,
  ...actions2
}
Run Code Online (Sandbox Code Playgroud)

然而,命名函数在导入时是未定义的。我可以将它们单独引入import { action1, action2 } from './actionCreatos1'并且它会起作用,但是将所有内容都写在两个地方并不理想。

如何将这些导入合并为一个对象导出?

log*_*yth 9

您可以使用模块系统本身来传递名称,而不是依赖传播,例如

// actions/index.js

export * from './actionCreators1'
export * from './actionCreators2'
Run Code Online (Sandbox Code Playgroud)

所以只要文件中的名称不冲突,它们就会很好地通过。