javascript - ES6 导入和导出是如何工作的?

标签 javascript reactjs ecmascript-6 es6-modules

我正在编写 react 应用程序,并且我有包含操作文件的目录,我的示例操作文件看起来像

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
        }
    };
}

在 actions dir 中我有一个名为 index.js 的文件,其内容为

import * as userActions from './userActions';

let exp = {
    ...userActions,
};

export default exp;

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

import {userLoadingStart} from './actions';

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

import actions from '../actions';

const { userLoadingStart } = actions;

那么它工作正常,那么我做错了什么?

我试过了

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

export exp

但它不能被 webpack 编译

最佳答案

So in other files i want to import my action creators so i use:

import {userLoadingStart} from './actions';

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

export * from './userActions';

本质上将 ./userActions 中的所有内容作为 ./actions 的导出传递。

关于javascript - ES6 导入和导出是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327333/

相关文章:

c# - 在 asp.net 应用程序中运行 JavaScript 设置的所有站点

javascript - 如何将 Prop 传递给 React Navigation 导航器内的组件?

javascript - 带有 ES6 模块的命名空间

Javascript 对象数据与 Vue 的绑定(bind)

javascript - 删除除 0-9 + -/* 和 ^ 之外的任何字符

react-native - 如何在 React Native 中连接 JSX 组件

javascript - Formik + React Form 中的下拉列表和值未更新

javascript - 延迟批量 GET 请求到服务器,JavaScript

javascript - 从数组中删除未选中的复选框

javascript - 了解用户是否已经注册了 Reactjs 和 firebase-google auth