ES6 +导出默认范围内的导入

时间:2019-05-04 12:57:06

标签: ecmascript-6 import export

我正在尝试这样做

state.js

export default {
  someValue: 'fooBar'
}

index.js

export default {
  export {default as state} from './state',
  export {default as actions} from './actions'
}

但我不允许,Unexpected keyword 'export' (2:2)。有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您只能在模块的顶层使用importexport。 (您可以在其他地方使用动态import(),但不能在静态版本中使用。)

因此要导出该文件,您必须执行您在注释中要避免的内容:

import {default as state} from './state';
import {default as actions} from './actions';
export default {
  state, actions
};

但是,请注意要向其中导出的内容:具有stateactions属性的对象,其初始值来自导入的{ {1}}和state,但未连接到它们。导入该对象的代码可以更改这些属性。您可以维护实时绑定:

action

,但是到那时,您有点重新发明了模块名称空间对象。您可能更愿意简单地:

import {default as state} from './state';
import {default as actions} from './actions';
export default {
  get state() {
    return state;
  },
  get actions() {
    return actions;
  }
};

,然后使用命名为exports的那些

export {default as state} from './state.js';
export {default as actions} from './actions.js';

或使用模块名称空间对象

import {state, actions} from "./index";