Si «React» est l'exportation par défaut de «react», pourquoi ne pouvons-nous pas utiliser un autre nom au lieu de «React»

9

Donc, je cherchais une réponse à cette question et j'ai constaté que lors de l'importation, 'React' n'a pas besoin d'être dans {} car il s'agit de l'exportation par défaut et non d'une exportation nommée, c'est exact, mais j'ai également vu que lors de l'importation d'une exportation par défaut, nous pourrions utiliser n'importe quel nom lors de l'importation. Mais dans ce cas, nous ne pouvons utiliser que l'importation ci-dessous,

import React from 'react';

et pas

import Somename from 'react';
Tick20
la source

Réponses:

10

Vous pouvez importer React de cette façon, mais si vous utilisez JSX, vous devez également mettre à jour votre configuration pour indiquer au transpilateur que vous utilisez que la fonction "builder" n'est plus React.createElement, mais l'est à la place Somename.createElement. (Si vous utilisez Babel, vous le faites avec la pragmadirective .) En effet, comme il est dit dans la documentation React , ceci:

const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

Est transposé en:

const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

... donc React(ou quel que soit le nom dans lequel vous le modifiez dans la configuration) doit être dans la portée . A part ça, ça va.

TJ Crowder
la source
1
Pour ajouter un peu à cela, il est utile de voir ce que fait un transpilateur avec JSX. Voici un exemple .
Nick
1
Merci @TJ Crowder et @ Nick, ce sont de très bonnes explications.
Tick20