ユースケースは簡単です:私はちょうどそれがインポートされたのと同じ名前でオブジェクトをエクスポートしたいです。
例えば:
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 '...';
私はよくいくつかのファイルを構成するindex.jsファイルで次のことをします。
export {default as SomeClass} from './SomeClass';
export {someFunction} from './utils';
export {default as React} from 'react';
これ ブログエントリ はいくつかの素晴らしい追加の例を提供します。
これらのエクスポートされたインポートにアクセスするときには、 eslint-rule ということに注意してください。基本的に、別のファイルでは、してはいけません:
import SomeClassModule from 'SomeClass/index.js';
SomeClassModule.someFunction(); // Oops, error
これをするべきです:
import SomeClassModule, {someFunction} from 'SomeClass/index.js';
someFunction(); // Ok
このような構造のインポートファイルをエクスポートすることができます
import First from './First'
import Second from './Second'
/..../
export { First, Second }
export {React}
を実行してimport {React} from ./module
経由でインポートできるはずです。
詳しくは https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export を参照してください。
これが私のスタティックイメージファイルの整理方法です。 '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} />
これが役に立ったことを願っています!
私のユースケースでは、babelが私のes7コードをes5に変換できるように、ある種の明示的なimportステートメントが明示的に必要です。
次の結果、エラー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;
./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;
もっとここ: