Se "Reagisci" è l'esportazione predefinita da "Reagisci", perché non possiamo usare un altro nome invece di "Reagisci"


9

Quindi, stavo cercando una risposta a questa domanda e ho scoperto che durante l'importazione, 'React' non ha bisogno di essere in {} poiché è l'esportazione predefinita e non un'esportazione denominata, Beh, è ​​corretto, ma ho anche visto che durante l'importazione di un'esportazione predefinita, potremmo usare qualsiasi nome per l'importazione. Ma in questo caso, possiamo usare solo l'importazione di seguito,

import React from 'react';

e non

import Somename from 'react';

Risposte:


10

È possibile importare Reagire in quel modo, ma se si sta utilizzando JSX, è inoltre necessario aggiornare la configurazione per dire al transpiler che si sta utilizzando che la funzione "costruttore" non è più React.createElement, ma è invece Somename.createElement. (Se stai usando Babel, lo fai con la pragmadirettiva .) Questo perché, come dice la documentazione di React , questo:

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

Viene trasferito a:

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

... quindi React(o qualunque sia il nome in cui lo cambi nella configurazione) deve essere nell'ambito . A parte questo, va bene.


1
Solo per aggiungere un po 'a questo, è utile vedere effettivamente cosa sta facendo un transpiler con JSX. Ecco un esempio .
Nick,

1
Grazie @TJ Crowder e @ Nick, quelle erano ottime spiegazioni.
Tick20
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.