Se 'React' é a exportação padrão de 'react', por que não podemos usar outro nome em vez de 'React'

9

Então, eu estava procurando por uma resposta para essa pergunta e descobri que, ao importar, 'React' não precisa estar em {}, pois é a exportação padrão e não uma exportação nomeada. Bem, isso está correto, mas também vi durante a importação de uma exportação padrão, poderíamos usar qualquer nome na importação. Mas, neste caso, podemos usar apenas a importação abaixo,

import React from 'react';

e não

import Somename from 'react';
Tick20
fonte

Respostas:

10

É possível importar o React dessa maneira, mas se você estiver usando JSX, também precisará atualizar sua configuração para informar ao transpiler que está usando que a função "construtor" não é mais React.createElement, mas sim Somename.createElement. (Se você estiver usando Babel, faça isso com a pragmadiretiva .) Isso ocorre porque, como diz a documentação do React , isso:

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

É transpilado para:

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

... então React(ou qualquer nome que você altere na configuração) deve estar no escopo . Fora isso, tudo bem.

TJ Crowder
fonte
11
Apenas para adicionar um pouco a isso, é útil realmente ver o que um transpiler está fazendo com o JSX. Aqui está um exemplo .
Nick
11
Obrigado @TJ Crowder e @ Nick, essas foram explicações muito boas.
Tick20