import React, { Component, PropTypes } from 'react';
Questo dice:
Importare il predefinita esportazione dal 'react'
sotto il nome React
e importare i nome esportazioni Component
e PropTypes
con gli stessi nomi.
Questa combina le due sintassi comuni che probabilmente avete visto
import React from 'react';
import { Component, PropTypes } from 'react';
Il primo viene utilizzato per importare e denominare l'esportazione di default, il secondo per importare le esportazioni di nome specificati.
Come regola generale, la maggior parte dei moduli fornirà un'unica esportazione predefinita o un elenco di esportazioni denominate. È un po 'meno normale che un modulo fornisca un'esportazione predefinita denominata esportazioni e. Tuttavia, nel caso in cui vi sia una caratteristica che è più comunemente importata, ma anche sotto-funzioni aggiuntive, è un progetto valido per esportare il primo come predefinito e i rimanenti come esportati con nome. In questi casi si utilizza la sintassi import
a cui si fa riferimento.
Le altre risposte sono da qualche parte tra errate e confuse, probabilmente perché i documenti MDN al momento in cui è stata posta questa domanda erano sbagliati e confusi. MDN ha mostrato l'esempio
import name from "module-name";
e disse name
è il "nome dell'oggetto che riceverà i valori importati." Ma questo è fuorviante e scorretto; prima di tutto, c'è solo un valore di importazione, che verrà "ricevuto" (perché non dire solo "assegnato a" o "usato per fare riferimento a") name
e il valore di importazione in questo caso è il valore predefinito esportare dal modulo.
Un altro modo di spiegare questo è da notare che quanto sopra importazione è proprio identico a
import { default as name } from "module-name";
e l'esempio del PO è proprio identico a
import { default as React, Component, PropTypes } from 'react';
La documentazione MDN ha continuato a mostrare la esempio
import MyModule, {foo, bar} from "my-module.js";
e ha affermato che significa
Importare i contenuti di un intero modulo, con alcuni anche con un nome esplicito. Inserisce myModule
(sic), foo
e bar
nell'ambito corrente. Si noti che foo
e myModule.foo
sono gli stessi, come lo sono bar
e myModule.bar
Cosa MDN detto qui, e ciò che altre risposte rivendicare sulla base della documentazione MDN non corretta, è assolutamente sbagliato, e può basarsi su una versione precedente di la spec. Ciò che effettivamente fa è
Importare l'esportazione del modulo predefinito e alcune esportazioni con nome esplicito. Inserisce MyModule
, foo
e bar
nell'ambito corrente. non accessibile tramite MyModule
, che è l'impostazione predefinita esportazione, non un ombrello che copre tutte le esportazioni I nomi di esportazione foo
e bar
sono .
(L'esportazione del modulo di default è il valore esportato con la export default
sintassi, che potrebbe anche essere export {foo as default}
.)
MDN scrittori di documentazione può avere ottenuto confuso con il seguente modulo:
import * as MyModule from 'my-module';
Importa tutte le esportazioni da my-module
e le rende accessibili sotto nomi come MyModule.name
. L'esportazione predefinita è anche accessibile come MyModule.default
, poiché l'esportazione predefinita non è altro che un'altra esportazione denominata con il nome default
.In questa sintassi, non v'è alcun modo per importare solo un sottoinsieme delle esportazioni di nome, anche se si potrebbe importare l'esportazione di default, se ce n'è uno, insieme a tutte le esportazioni di nome, con
import myModuleDefault, * as myModule from 'my-module';
@Quentin è ES6 – royhowie
La risposta è nella [** documentazione **] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) – adeneo
I membri da importare dal modulo sono racchiusi in curlybraces – adeneo