Почему мы должны использовать импорт React из React

Я изучаю 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;

Благодарность!. можете ли вы объяснить, как компилятор понял, что JSX используется в Person.js

electrodragon 17.07.2018 21:23

Статический анализ позволяет Babel обнаруживать JSX (через некоторые плагины). Затем он использует дополнительные плагины, чтобы фактически разбить его и проанализировать / преобразовать JSX в React.createElement.

Andrew Li 17.07.2018 21:27

спасибо, этот комментарий помог узнать, как JSX понимается компилятором

electrodragon 17.07.2018 21:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
3
8 682
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы передадите 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/…

kmui2 08.12.2020 05:06

Когда вы пытаетесь использовать jsx в своем файле javascript, ваш обычный компилятор, а также даже babel не могут этого понять. Хотя нормальный компилятор этого никогда не поймет. Но в любом случае вы хотите сказать, что ваш компилятор я предоставляю вам jsx в файле.

import React from 'react';

Выше показан способ проинструктировать Babel, теперь это легкая задача для вас.

<p>This is person module used inside app module</p>

Выше - статус jsx. Поэтому, когда вы когда-либо будете его использовать, вам потребуется импортированный React. Точно так же он нам не нужен в действиях, редукторах и т. д. Во многих местах, потому что у нас там нет jsx.

Другие вопросы по теме