web-dev-qa-db-fra.com

ES6 exportation / importation dans un fichier d'index

J'utilise actuellement ES6 dans une application React via webpack/babel. J'utilise des fichiers d'index pour rassembler tous les composants d'un module et les exporter. Malheureusement, cela ressemble à ceci:

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

Donc, je peux bien l’importer d’autres endroits comme celui-ci:

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

De toute évidence, ce n’est pas une très bonne solution, alors je me demandais s’il existait un autre moyen. Je ne semble pas pouvoir exporter directement le composant importé.

166
MoeSattler

Vous pouvez facilement réexporter l'importation par défaut:

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

Il y a aussi un proposition de ES7 ES8 qui vous permettra d’écrire export Comp1 from '…';.

313
Bergi

En outre, n'oubliez pas que si vous avez besoin d'exporter plusieurs fonctions à la fois, comme des actions que vous pouvez utiliser

export * from './XThingActions';
50
G. M.

Trop tard, mais je veux partager la façon dont je le résous.

Avoir le fichier model qui a deux export nommés:

export { Schema, Model };

et ayant le fichier controller qui a l'exportation par défaut:

export default Controller;

J'ai exposé dans le fichier index de cette manière:

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

export { Schema, Model, Controller };

et en supposant que je veuille tous les importer:

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

J'ai eu un problème avec export *, il a retourné undefinedlorsque je voudrais importer la fonction/classe par défaut ...

Donc, je l'ai finalement corrigé avec export {default} from './MyClass' et cela a également fonctionné

8
pirs