Si 'React' es la exportación predeterminada de 'react', ¿por qué no podemos usar otro nombre en lugar de 'React'?

9

Entonces, estaba buscando alguna respuesta a esta pregunta y descubrí que al importar, 'Reaccionar' no necesita estar en {} ya que es la exportación predeterminada y no una exportación con nombre, Bueno, eso es correcto, pero también he visto que al importar una exportación predeterminada, podríamos usar cualquier nombre para la importación. Pero en este caso, solo podemos usar la siguiente importación,

import React from 'react';

y no

import Somename from 'react';
Garrapata20
fuente

Respuestas:

10

Usted puede importar reaccionar de esa manera, pero si usted está utilizando JSX, también es necesario actualizar la configuración para decirle al transpiler que está utilizando que la función de "constructor" ya no es React.createElement, sino que se muestra Somename.createElement. (Si está utilizando Babel, lo hace con la pragmadirectiva ). Eso es porque, como dice en la documentación de React , esto:

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

Se transpira a:

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

... por Reactlo tanto (o cualquier nombre al que lo cambie en la configuración) debe estar dentro del alcance . Aparte de eso, está bien.

TJ Crowder
fuente
1
Solo para agregar un poco a esto, es útil ver qué está haciendo un transpiler con JSX. Aquí hay un ejemplo .
Nick
1
Gracias @TJ Crowder y @ Nick, esas fueron muy buenas explicaciones.
Tick20