Wenn 'Reagieren' der Standardexport von 'Reagieren' ist, warum können wir keinen anderen Namen anstelle von 'Reagieren' verwenden?

9

Also suchte ich nach einer Antwort auf diese Frage und stellte fest, dass 'React' beim Importieren nicht in {} sein muss, da es sich um den Standardexport und nicht um einen benannten Export handelt. Nun, das ist richtig, aber ich habe es auch gesehen Beim Importieren eines Standardexports können wir beim Import einen beliebigen Namen dafür verwenden. In diesem Fall können wir jedoch nur den folgenden Import verwenden:

import React from 'react';

und nicht

import Somename from 'react';
Tick20
quelle

Antworten:

10

Sie können React auf diese Weise importieren. Wenn Sie jedoch JSX verwenden, müssen Sie auch Ihre Konfiguration aktualisieren, um dem Transpiler mitzuteilen, dass Sie die Funktion "Builder" nicht mehr verwenden React.createElement, sondern stattdessen Somename.createElement. (Wenn Sie Babel verwenden, tun Sie dies mit der pragmaDirektive .) Dies liegt daran, wie in der React-Dokumentation angegeben :

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

Ist transpiliert zu:

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

... also React(oder welcher Name auch immer Sie ihn in der Konfiguration ändern) muss im Geltungsbereich sein . Davon abgesehen ist es in Ordnung.

TJ Crowder
quelle
1
Um dies ein wenig zu ergänzen, ist es hilfreich zu sehen, was ein Transpiler mit JSX macht. Hier ist ein Beispiel .
Nick
1
Danke @TJ Crowder und @ Nick, das waren sehr gute Erklärungen.
Tick20