Якщо "Реагувати" є експортом за замовчуванням з "реагувати", чому ми не можемо використовувати якесь інше ім'я замість "Реагувати"


9

Отже, я шукав відповідь на це запитання і виявив, що під час імпорту "React" не потрібно містити {}, оскільки це експорт за замовчуванням, а не ім'я з ім'ям. Ну це правильно, але я також бачив що, імпортуючи експорт за замовчуванням, ми можемо використовувати імпорт для імпорту. Але в цьому випадку ми можемо використовувати лише імпорт нижче,

import React from 'react';

і ні

import Somename from 'react';

Відповіді:


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(або яке б ім'я ви не змінили в конфігурації) має бути в області застосування . Крім цього, це добре.


1
Для того, щоб трохи додати до цього питання, корисно насправді побачити, що робить транспілер з JSX. Ось приклад .
Нік

1
Дякую @TJ Crowder та @ Nick, це були дуже хороші пояснення.
Tick20
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.