Ce composant fonctionne:
export class Template extends React.Component {
render() {
return (
<div> component </div>
);
}
};
export default Template;
Si je supprime la dernière ligne, cela ne fonctionne pas.
Uncaught TypeError: Cannot read property 'toUpperCase' of undefined
Je suppose que je ne comprends pas quelque chose dans la syntaxe es6. N'est-il pas nécessaire d'exporter sans signe "par défaut"?
javascript
ecmascript-6
stkvtflw
la source
la source
export default class Template extends React.Component {
Réponses:
Exporter sans
default
signifie que c'est une "exportation nommée". Vous pouvez avoir plusieurs exportations nommées dans un seul fichier. Donc, si vous faites cela,alors vous devez importer ces exportations en utilisant leurs noms exacts. Donc, pour utiliser ces composants dans un autre fichier, vous devez le faire,
Alternativement, si vous exportez en tant
default
qu'export comme celui-ci,Ensuite, dans un autre fichier, vous importez l'exportation par défaut sans utiliser
{}
, comme ceci,Il ne peut y avoir qu'une seule exportation par défaut par fichier. Dans React, c'est une convention d'exporter un composant à partir d'un fichier et de l'exporter comme exportation par défaut.
Vous êtes libre de renommer l'exportation par défaut lors de son importation,
Et vous pouvez importer des exportations par défaut et nommées en même temps,
la source
import React, {Component} from 'react';
.import RaisedButton from 'material-ui/RaisedButton';
au lieu deimport {RaisedButton} from 'material-ui';
Cela rendra votre processus de génération plus rapide et votre sortie de génération plus petite.import Binding from 'module/Binding'
être plus efficace queimport {Binding} from 'module'
?Ajoutez {} lors de l'importation et de l'exportation:
export { ... };
|import { ... } from './Template';
exporter →
import { ... } from './Template'
exporter par défaut →
import ... from './Template'
Voici un exemple de travail:
⚡️ Sandbox de travail pour jouer: https://codesandbox.io/s/export-import-example-react-jl839?fontsize=14&hidenavigation=1&theme=dark
la source