ES6进出口如何运作?

时间:2018-03-16 18:25:01

标签: javascript reactjs ecmascript-6 es6-modules

我正在写反应应用程序,我有动作文件的dir我的示例动作文件看起来像

export const USER_LOADING_START = 'USER_LOADING_START';
export const USER_LOADED = 'USER_LOADED';

export function userLoadingStart() {
    return {
        type: USER_LOADING_START
    };
}

export function userDataLoaded(value) {
    return {
        type: USER_LOADED,
        payload: {
            value: value
        }
    };
}

并且在动作目录中,我有一个名为index.js的文件,其内容为

import * as userActions from './userActions';

let exp = {
    ...userActions,
};

export default exp;

所以在其他文件中我想导入我的动作创建者,所以我使用:

import {userLoadingStart} from './actions';

它不起作用,但如果我写:

import actions from '../actions';

const { userLoadingStart } = actions;

然后它正常工作,所以我做错了什么?

我试过

export {
    ...userActions,
    ...spinnerActions,
    ...errorActions
}

export exp

但它不能通过webpack编译

1 个答案:

答案 0 :(得分:2)

  

所以在其他文件中我想导入我的动作创建者,所以我使用:

import {userLoadingStart} from './actions';

要使其工作,这意味着./actions必须导出命名值。问题是您的逻辑当前捆绑所有内容并将其导出为名为default的单个命名导出。最简单的方法是为你的索引做

export * from './userActions';

基本上将所有内容从./userActions传递到./actions的导出。