2015-12-03 24 views
85

現在、webpack/bable経由でReactアプリケーションでES6を使用しています。 私は、モジュールのすべてのコンポーネントを集めてエクスポートするためにインデックスファイルを使用しています。残念ながら、このように見えること: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'; 

明らかにそれは非常にいい解決策ではないので、そこにあれば、私は、思っていました他の方法でした。インポートされたコンポーネントを直接エクスポートすることはできないようです。

敬具

+0

[ディレクトリ内のファイルからモジュールをインポートする]の可能な複製(http://stackoverflow.com/questions/29722270/import-modules-from-files-in-directory) –

答えて

164

あなたは簡単にデフォルトのインポートを再エクスポートすることができます。

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

はまた、あなたがexport Comp1 from '…';を書くようになるproposal for ES7 ES8があります。また

+1

類似パターン[ここ] (http://stackoverflow.com/a/32230064/1048572)と[here](http://stackoverflow.com/q/ 29722270/1048572) – Bergi

+4

ES8の提案に加えて、コード生成を使用してインデックスファイルを管理することができます。 https://github.com/gajus/create-indexとhttps://github.com/ryardley/indexrを見てください。 – Gajus

+0

@Bergiしたがって、これらの3行はインポートとエクスポートの両方を行いますか?または、これは単にエクスポートしていますが、もはやComp1_の名前などでバイディングする必要はありませんか? – musicformellons

24

、一度に複数の関数をエクスポートする必要がある場合は、アクションのようにあなたが遅すぎる

export * from './XThingActions'; 
+5

はい。 Unforunatelyこれは_only_という名前のエクスポートを受け取ります。つまり、デフォルトのエクスポートは含まれません。 – ArneHugo

+0

恐ろしい!私のために働く。 – purezen

+0

私は(かなり誤解を招く...私を瞬時に)受け取りました。「SyntaxError:予期せぬ予約語」、@ Bergiの受け入れられた回答が機能します。 –

15

を使用することができますが、私は、私はそれを解決する方法を共有することを念頭に置いてクマ。

:私はこのように indexファイルで公開さ

export default Controller; 

export { Schema, Model }; 

とデフォルトのエクスポートを持つcontrollerファイルを持つ:輸出という名前の2つがありますmodelファイルを持つ

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

export { Schema, Model, Controller }; 

と私はimporしたいと仮定それらのトンすべて:私はexport *に問題があった

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

関数をインポートしてからエクスポートすると、これは機能しますか?私は試みたが、それはしなかった。 –

+0

実際には申し訳ありませんが、私は行方不明になっていました。 –

+0

驚くばかり!非常にきれいで短い – Dmitriy

0

私はデフォルトの関数/クラスをインポートするだろうというとき、それはそう...

undefinedを返し、私は最終的にexport {default} from './MyClass'とそれを固定し、それ

関連する問題