如何在ES6中导出导入的对象?

时间:2016-05-13 02:00:02

标签: import export ecmascript-6

用例很简单:我只想导出一个名称与导入对象一样的对象。

例如:

import React from 'react';
export React;

但这不起作用。我必须写:

import React from 'react';
export const React = React;

但这很奇怪。这样做的正确方法是什么?

已更新

感谢您的帮助和参考。我用许多线索解决了我的问题。我想和我分享一些常见的案例和解决方案。

导出导入

import d, {obj} from '...';

export {obj, d};
export {obj as name1, d as name2};

重新导出所有已命名的导入

export * from '...';
export * as name1 from '...';

重新导出一些命名导入

export {a, b as name1} from '...';

将默认导入重新导出为默认导出

export {default} from '...';

将默认导入重新导出为命名导出

export {default as name1} from '...';

6 个答案:

答案 0 :(得分:83)

我经常在组成多个文件的index.js文件中执行以下操作:

export {default as SomeClass} from './SomeClass';
export {someFunction} from './utils';
export {default as React} from 'react';

blog entry提供了一些不错的其他示例。

重要提示

访问这些导出的导入时,您应该知道此eslint-rule。基本上,在另一个文件中,你不应该:

import SomeClassModule from 'SomeClass/index.js';
SomeClassModule.someFunction(); // Oops, error

你应该这样做:

import SomeClassModule, {someFunction} from 'SomeClass/index.js';
someFunction(); // Ok

答案 1 :(得分:19)

您可以导出具有此类结构的导入文件

import First from './First'
import Second from './Second'
/..../
export { First, Second }

答案 2 :(得分:0)

您应该能够export {React}并通过import {React} from ./module

导入它

有关详细信息,请参阅https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export

答案 3 :(得分:0)

鉴于./foo.js

const Foo = class {
  talk() { return 'hello'; }
};

export default Foo;

然后你应该能够做到这一点:

import Foo from './foo';

let foo = new Foo();

foo.talk(); // => 'hello';

语法或多或少遵循commonjs module.exports模式,您可以在其中执行此操作:

const Foo = class {

};

module.exports = Foo;

更多信息:

http://exploringjs.com/es6/ch_modules.html

答案 4 :(得分:0)

对于我的用例,我明确需要某种显式的import语句,以便babel可以将我的es7代码转换为es5。

以下结果导致错误You gave us a visitor for the node type "ForAwaitStatement" but it's not a valid type

require( 'babel-core/register' ); //transpiles es7 to es5
export {default} from './module_name'

我的解决方案是使用require()显式导入模块:

require( 'babel-core/register' );
export default require( './module_name' ).default;

答案 5 :(得分:0)

这就是组织静态图像文件的方式。我创建了一个名为“ Directory.js”的新文件。

const asset = {
    icon: {
        artist: require('./icon/artist.png'),
        artists: require('./icon/artists.png'),
        bookmark: require('./icon/bookmark.png'),
        cameraFlip: require('./icon/camera-flip.png')
    },
    image: {
        color: require('./image/color.png'),
        posting: require('./image/posting.png'),
        newSchool: require('./image/new-school.png'),
        traditional: require('./image/traditional.png')
    }
}

export default asset;

这是导入。

import asset from './../asset/Directory';

// usage in react native
<Image source={asset.icon.posting} />

希望这对您有帮助!