ウェブサイト検索

javascript - indexファイルでのES6のエクスポート/インポート


私は現在、webpack/babelを介してReactアプリでES6を使用しています。モジュールのすべてのコンポーネントをまとめてエクスポートするために、インデックスファイルを使用しています。しかし、残念ながら、それは次のようになります:

import Comp1_ from './Comp1.jsx';
import Comp2_ from './Comp2.jsx';
import Comp3_ from './Comp3.jsx';

export const Comp1 = Comp1_;
export const Comp2 = Comp2_;
export const Comp3 = Comp3_;

なので、このように他の場所からきれいにインポートすることができます:

import { Comp1, Comp2, Comp3 } from './components';

明らかにそれはあまり良い解決策ではないので、他に方法があるかどうか考えていました。インポートしたコンポーネントを直接エクスポートできないようです。

回答 #1

デフォルトのインポートを簡単に再エクスポートできます:

export {default as Comp1} from './Comp1.jsx';
export {default as Comp2} from './Comp2.jsx';
export {default as Comp3} from './Comp3.jsx';

また、ES7 ES8 では export Comp1 from '…'; と書けるようにする提案もあります。

回答 #2

また、複数の関数を一度にエクスポートする必要がある場合、例えばアクションのような場合には、使用できることを覚えておいてください

export * from './XThingActions';

回答 #3

デフォルトエクスポート

// Default export (recommended)
export {default} from './module' 

// Default export with alias
export {default as d1} from './module' 

すべての輸出

// In >ES7, it could be
export * from './module'

// In >ES7, with alias
export * as d1 from './module'

関数名のエクスポート

// export by function names
export { funcName1, funcName2, …} from './module'

// export by aliases
export { funcName1 as f1, funcName2 as f2, …} from './module'

分割代入されたオブジェクトのエクスポート

// export destructured object
export const { myVar, myFunction } = myObjectWithEverything

// export destructured object, with renaming
export const { v1: myVar, f1: myFunction } = myBigObject

配列付き

// it works with array as well
export const [ funcName1, funcName2 ] = myBigArray

詳細情報: https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/export

回答 #4

遅すぎますが、私がそれを解決する方法を共有したいです。

model ファイルがあり、2つの名前付きエクスポートを持っています:

export { Schema, Model };

そして、デフォルトエクスポートを持つcontrollerファイルがあること:

export default Controller;

インデックスファイルでは次のように公開しました:

import { Schema, Model } from './model';
import Controller from './controller';

export { Schema, Model, Controller };

そして、もし私がそれらすべてをインポートしたいと仮定すると:

import { Schema, Model, Controller } from '../../path/';

回答 #5

フォルダー構造:

components|
          |_Comp.js
          |_AnotherComp.js
          |_YetAnotherComp.js
          |_index.js

Comp.jsファイルで.. 他のコンポーネントと同様に行います:

export {Comp}

index.jsから

export {Comp} from './Comp';
export {AnotherComp} from './AnotherComp';
export {YetAnotherComp} from './YetAnotherComp';

今、どこでもインポートできる

import {Comp, AnotherComp, YetAnotherComp} from './components'

関連記事