Если «React» - это экспорт по умолчанию из «реакции», почему мы не можем использовать другое имя вместо «React»?

9

Итак, я искал какой-то ответ на этот вопрос и обнаружил, что при импорте «React» не обязательно должен быть в {}, поскольку это экспорт по умолчанию, а не именованный экспорт. Что ж, это правильно, но я также видел что при импорте экспорта по умолчанию мы можем использовать любое имя для импорта. Но в этом случае мы можем использовать только следующий импорт,

import React from 'react';

и не

import Somename from 'react';
Tick20
источник

Ответы:

10

Таким способом вы можете импортировать React, но если вы используете JSX, вам также необходимо обновить свою конфигурацию, чтобы сообщить транспортеру, что вы используете, что функция «builder» больше не существует React.createElement, а вместо этого Somename.createElement. (Если вы используете Babel, вы делаете это с помощью pragmaдирективы .) Это потому, что, как сказано в документации React , это:

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

Транспортируется в:

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

... так React(или любое другое имя, которое вы измените в конфигурации) должно быть в области видимости . Кроме этого, все в порядке.

TJ Crowder
источник
1
Чтобы добавить к этому немного, полезно на самом деле увидеть, что делает транспортер с JSX. Вот пример .
Ник
1
Спасибо @TJ Crowder и @ Ник, это были очень хорошие объяснения.
Tick20