Jeśli „React” jest domyślnym eksportem z „React”, dlaczego nie możemy użyć innej nazwy zamiast „React”

9

Szukałem odpowiedzi na to pytanie i odkryłem, że podczas importowania „React” nie musi znajdować się w {}, ponieważ jest to domyślny eksport, a nie eksport nazwany. Cóż, to prawda, ale widziałem że podczas importowania domyślnego eksportu możemy użyć dowolnej nazwy dla tego importu. Ale w tym przypadku możemy użyć tylko poniższego importu,

import React from 'react';

i nie

import Somename from 'react';
Tick20
źródło

Odpowiedzi:

10

Państwo może importować React ten sposób, ale jeśli używasz JSX, należy również zaktualizować konfigurację, aby powiedzieć transpiler że używasz, że funkcja „budowniczy” nie jest już React.createElement, ale zamiast Somename.createElement. (Jeśli używasz Babel, robisz to zgodnie z pragmadyrektywą .) Jest tak, ponieważ, jak napisano w dokumentacji React , to:

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

Jest transpilowany do:

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

... więc React(lub jakakolwiek nazwa, którą zmienisz w konfiguracji) musi być objęty zakresem . Poza tym jest w porządku.

TJ Crowder
źródło
1
Wystarczy dodać, że warto zobaczyć, co robi transpiler z JSX. Oto przykład .
Nick
1
Dziękuję @ TJ Crowder i @ Nick, To były bardzo dobre wyjaśnienia.
Tick20