support pass operator objects es6 assignment array javascript ecmascript-6 destructuring es6-modules

javascript - pass - js destructuring support



Desestructuración de ES6 e importaciones de módulos (2)

Para hacer esto:

import {purple, grey} from ''themeColors'';

Sin repetir la export const para cada símbolo, simplemente haga:

export const purple = ''#BADA55'', grey = ''#l0l'', gray = grey, default = ''this line actually causes an error'';

Tenía la impresión de que esta sintaxis:

import Router from ''react-router''; var {Link} = Router;

tiene el mismo resultado final que este:

import {Link} from ''react-router'';

¿Alguien puede explicar cuál es la diferencia?

(Originalmente pensé que era un error React Router ).


import {Link} from ''react-router'';

importa una exportación con nombre desde react-router , es decir, algo como

export const Link = 42;

import Router from ''react-router''; const {Link} = Router;

extrae la propiedad Link de la exportación predeterminada , suponiendo que sea un objeto, por ejemplo

export default { Link: 42 };

(la exportación predeterminada no es más que una exportación con nombre estandarizada con el nombre "predeterminado").

Ver también export en MDN .

Ejemplo completo:

// react-router.js export const Link = 42; export default { Link: 21, }; // something.js import {Link} from ''./react-router''; import Router from ''./react-router''; const {Link: Link2} = Router; console.log(Link); // 42 console.log(Link2); // 21

Con Babel 5 y versiones inferiores, creo que han sido intercambiables debido a la forma en que los módulos ES6 se han trasladado a CommonJS. Pero esas son dos construcciones diferentes en lo que respecta al lenguaje.