Я изучаю React js в модуле случай ii App.js, мне нужно импортировать React, потому что метод оказывать() используется для преобразования JSX в элементы dom, но в Person.js мы создаем стрелочную функцию, и мы экспортируем ее, чтобы она могла быть импортированы и используются в функции рендеринга модулей приложения, как и в модуле приложения, который мы импортировали React, и он преобразует JSX в модуль person и отображается в DOM, но когда он выдает ошибку, когда мы удаляем приведенный ниже код в Person.js
import React from 'react' in Person.js
это выдает ошибку
React 'должен быть в области действия при использовании JSX, если мы объявляем JSX в методах (например, рендеринге), предоставленных из класса React, он должен выдать ошибку.
может кто-нибудь объяснить
i) зачем нам импортировать React в Person.js?
ii) почему при удалении вышеуказанного кода возникла ошибка?
случай i)
Person.js
import React from 'react'
const person = () => {
return <p>This is person module used inside app module</p>
};
export default person
случай ii)
App.js
import React, { Component } from 'react';
import './App.css'
import Person from './Person/Person'
class App extends Component {
render() {
return (
<div className = "App">
<h1>this is app module and i am being used as the root component</h1>
<Person/>
</div>
);}}
export default App;
Статический анализ позволяет Babel обнаруживать JSX (через некоторые плагины). Затем он использует дополнительные плагины, чтобы фактически разбить его и проанализировать / преобразовать JSX в React.createElement.
спасибо, этот комментарий помог узнать, как JSX понимается компилятором



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы передадите JSX Babel, вы увидите, что JSX - это просто сахар для вызовов React.createElement. Вот почему нам нужно импортировать React, если мы используем JSX.
Вход
<p>This is person module used inside app module</p>
Выход
/*#__PURE__*/
React.createElement("p", null, "This is person module used inside app module");
Просто обновление: React 17 и некоторые более старые указанные основные версии теперь включают новое преобразование JSX, которое не требует этого явного импорта React. См. reactjs.org/blog/2020/09/22/…
Когда вы пытаетесь использовать jsx в своем файле javascript, ваш обычный компилятор, а также даже babel не могут этого понять. Хотя нормальный компилятор этого никогда не поймет. Но в любом случае вы хотите сказать, что ваш компилятор я предоставляю вам jsx в файле.
import React from 'react';
Выше показан способ проинструктировать Babel, теперь это легкая задача для вас.
<p>This is person module used inside app module</p>
Выше - статус jsx. Поэтому, когда вы когда-либо будете его использовать, вам потребуется импортированный React. Точно так же он нам не нужен в действиях, редукторах и т. д. Во многих местах, потому что у нас там нет jsx.
Благодарность!. можете ли вы объяснить, как компилятор понял, что JSX используется в Person.js