ES6 exportar / importar en el archivo de índice


Actualmente estoy usando ES6 en una aplicación React a través de webpack/babel. Estoy usando archivos de índice para reunir todos los componentes de un módulo y exportarlos. Desafortunadamente, eso se ve así:

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

Así que puedo importarlo desde otros lugares como este:

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

Obviamente no es una solución muy agradable, así que me preguntaba, si había alguna otra manera. No me parece capaz de exportar el componente importado directamente.

Author: Periback, 2015-12-03

4 answers

Puede volver a exportar fácilmente la importación predeterminada:

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

También hay una propuesta para ES7 ES8 que te permitirá escribir export Comp1 from '…';.

 229
Author: Bergi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-17 12:33:16

Además, tenga en cuenta que si necesita exportar múltiples funciones a la vez, como acciones, puede usar

export * from './XThingActions';
 36
Author: G. M.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 02:43:22

Demasiado tarde, pero quiero compartir la forma en que lo resuelvo.

Que tiene model archivo que tiene dos exportaciones con nombre:

export { Schema, Model };

Y tener controller archivo que tiene la exportación por defecto:

export default Controller;

Expuse en el archivo index de esta manera:

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

export { Schema, Model, Controller };

, Y suponiendo que quiero importar todos ellos:

import { Schema, Model, Controller } from '../../path/';
 25
Author: Javier Aguila,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-30 18:22:24

Tuve un problema con export *, devolvió undefinedcuando importaría la función/clase predeterminada ...

Así que, finalmente lo arreglé con export {default} from './MyClass' y funcionó también

 3
Author: pirs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 02:38:33