Comment exporter un object importé dans ES6?

Le cas d’utilisation est simple: je veux juste exporter un object avec le nom tel qu’il a été importé.

par exemple:

import React from 'react'; export React; 

mais cela ne fonctionne pas. Je dois ecrire:

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

Mais c’est étrange. Quel est le bon moyen de le faire?

Mis à jour :

Merci pour l’aide et les références. J’ai résolu mon problème avec de nombreux indices. Je voudrais partager quelques cas communs pour moi et les solutions.

importations à l’exportation

 import d, {obj} from '...'; export {obj, d}; export {obj as name1, d as name2}; 

réexporter toutes les importations nommées

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

réexporter des importations nommées

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

réexportation de l’importation par défaut en tant qu’exportation par défaut

 export {default} from '...'; 

réexporter l’importation par défaut en tant qu’exportation nommée

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

Je fais souvent ce qui suit dans les fichiers index.js qui composent plusieurs fichiers:

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

Cette entrée de blog fournit quelques bons exemples supplémentaires.

Note importante

Vous devez être conscient de cette règle d’eslint lorsque vous accédez à ces importations exscopes. En gros, dans un autre fichier, vous ne devriez pas:

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

Vous devriez faire ceci:

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

Vous pouvez exporter un fichier importé avec une telle structure

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

Vous devriez pouvoir export {React} et l’importer via import {React} from ./module

Voir https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export pour plus d’informations.

Étant donné ./foo.js :

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

Ensuite, vous devriez être capable de faire ceci:

 import Foo from './foo'; let foo = new Foo(); foo.talk(); // => 'hello'; 

La syntaxe suit plus ou moins le modèle commonjs module.exports, où vous feriez ceci:

 const Foo = class { }; module.exports = Foo; 

Plus ici:

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

Pour mon cas d’utilisation, j’ai explicitement besoin d’une sorte de déclaration d’importation explicite pour que babel puisse transposer mon code es7 en es5.

Le résultat suivant se traduit par une erreur You gave us a visitor for the node type "ForAwaitStatement" but it's not a valid type :

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

Ma solution consistait à importer explicitement le module en utilisant require() :

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