Руководства

Что такое React? Простое руководство для тех, кто не программирует

React — это JavaScript-библиотека для создания пользовательских интерфейсов: той части приложения, которую видят и на которую нажимают люди. Экраны собираются из повторно используемых частей, которые называются компонентами, — например кнопки, карточки товара или целой страницы. React поддерживает экран в соответствии с вашими данными: когда данные меняются, React обновляет те части страницы, которые от них зависят. Библиотеку создали в Facebook (теперь Meta), она открытая и входит в число самых распространённых способов создавать веб-приложения.

Почему это важно при создании приложений с ИИ

Если вы создаёте веб-приложение с помощью ИИ-инструмента, есть хороший шанс, что оно написано на React. Многие ИИ-конструкторы используют React по умолчанию: он популярен, хорошо документирован, и у ИИ-моделей есть огромный объём React-кода для обучения.

Чтобы работать с ИИ, React знать не обязательно. Но немного понимания помогает:

  • Точно описывать изменения. «Измени компонент ProductCard, чтобы цена была жирной» понятнее, чем «сделай цены где-нибудь заметнее».
  • Понимать ошибки. Сообщения вроде «Cannot read properties of undefined» или «Too many re-renders» станут яснее.
  • Делать разумный выбор. Простые React-приложения отрисовываются в браузере, а это влияет на видимость в поиске и скорость первой загрузки. Зная это, вы решите, когда попросить другую архитектуру.
  • Работать с разработчиками потом. React — распространённый навык, поэтому разработчик обычно быстро разберётся в React-проекте.

Бытовая аналогия

Представьте конструктор LEGO. Вместо того чтобы вырезать модель из одного куска, вы собираете её из стандартных деталей. Несколько деталей образуют колесо; четыре колеса и другие части дают машину. Если вы хотите, чтобы у всех машин были красные колёса, вы меняете конструкцию колеса один раз.

Компоненты React — это детали конструктора. Компонент Button используется внутри ProductCard, который используется внутри ProductGrid, который входит в ShopPage. Измените Button один раз, и каждая кнопка в приложении изменится.

Есть и вторая половина аналогии: представьте, что модель из LEGO перестраивается сама, когда вы меняете инструкцию. Это второй фокус React: вы описываете, как экран должен выглядеть для текущих данных, а React сам решает, что нужно поменять на странице.

Основные идеи

Компоненты

Компонент — это JavaScript-функция, которая возвращает часть интерфейса. Документация React описывает компонент как часть интерфейса, у которой есть собственная логика и внешний вид. Имена компонентов начинаются с заглавной буквы.

JSX

Компоненты обычно пишут на JSX, который выглядит как HTML, смешанный с JavaScript:

function Greeting() {
  return <h1>Welcome back!</h1>;
}

JSX не обязателен, но в документации React отмечено, что большинство проектов его используют. Перед запуском в браузере он превращается в обычный JavaScript.

Props

Props — это входные данные, которые вы передаёте в компонент, как настройки у многоразовой детали:

<ProductCard name="Lavender Candle" price={24} />

Тот же ProductCard может показать любой товар.

State

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

Хуки

Хуки — это функции, имена которых начинаются с use, например useState (запомнить значение) и useEffect (выполнить код после отрисовки, например загрузить данные). Вы увидите их во всём React-коде, который пишет ИИ.

Пример: счётчик корзины

Допустим, в вашем интернет-магазине есть кнопка «Добавить в корзину» и иконка корзины с числом товаров. На React это выглядит примерно так:

import { useState } from "react";

function Shop() {
  const [cartCount, setCartCount] = useState(0);

  return (
    <div>
      <CartIcon count={cartCount} />
      <ProductCard
        name="Lavender Candle"
        price={24}
        onAdd={() => setCartCount(cartCount + 1)}
      />
    </div>
  );
}

function CartIcon({ count }) {
  return <span>Cart ({count})</span>;
}

function ProductCard({ name, price, onAdd }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>${price}</p>
      <button onClick={onAdd}>Add to cart</button>
    </div>
  );
}

Что происходит, когда покупатель нажимает «Добавить в корзину»:

  1. Обработчик onClick кнопки вызывает onAdd, а тот вызывает setCartCount.
  2. React меняет state cartCount с 0 на 1.
  3. React перерисовывает Shop, передавая count={1} в CartIcon.
  4. На странице появляется «Cart (1)». Никто не писал код вида «найди текст корзины и поменяй его»: экран следует за данными.

Обратите внимание и на ограничения. Это количество живёт в памяти браузера. Обновите страницу, и оно снова станет 0. Чтобы корзина сохранялась, её нужно записать куда-то надолго: в cookie, в хранилище браузера или в базу данных через ваш бэкенд. React отвечает за экран, а не хранит ваши данные.

Где React находится в веб-приложении

ЧастьЧто делаетЧастый выбор
Библиотека интерфейсаСтроит интерфейсReact
ЯзыкНа чём написан кодJavaScript или TypeScript
СборщикПревращает исходный код в файлы, которые загружает браузер; запускает dev-серверVite
Фреймворк (необязательно)Добавляет маршрутизацию, серверный рендеринг, загрузку данныхNext.js, React Router
СтилизацияВнешний видTailwind CSS, CSS-файлы
БэкендБизнес-логика, данные, секретыNode.js, Python и другие
База данныхХранит данныеPostgres и другие

Приложение «Vite + React» отрисовывается в браузере (это одностраничное приложение, SPA). Приложение на Next.js может сначала отрисовать страницы на сервере, что помогает поисковикам и скорости первой загрузки.

Термины

ТерминЗначение
КомпонентМногоразовая часть интерфейса, написанная как функция.
JSXСинтаксис, похожий на HTML, внутри JavaScript, которым описывают компоненты.
PropsВходные данные, передаваемые в компонент.
StateДанные, которые компонент помнит и которые могут меняться со временем.
ХукФункция, имя которой начинается с use и которая добавляет компоненту возможности вроде state.
Рендер / перерисовкаВычисление React того, что должен показывать экран, снова после изменений.
Одностраничное приложение (SPA)Приложение, которое загружается один раз и обновляет страницу с помощью JavaScript, а не загружает новые страницы.
Серверный рендеринг (SSR)Создание HTML страницы на сервере до отправки её браузеру.
npm-пакетГотовая библиотека кода, которую можно установить, например выбор даты или библиотека графиков.
React NativeРодственный проект для создания нативных мобильных приложений.

Частые ошибки и заблуждения

  • «React — это язык программирования». Это библиотека, написанная на JavaScript и используемая из него (или из TypeScript).
  • «React хранит мои данные». State живёт в браузере и исчезает при обновлении страницы. Постоянные данные требуют бэкенда и базы данных.
  • Секреты в React-коде. Всё в React-приложении отправляется в браузер посетителя. API-ключи там становятся публичными. Держите их на сервере.
  • «React-приложения нельзя найти в поиске». Отрисовка только в браузере хуже для поиска, но предварительная отрисовка или серверный рендеринг решают большую часть проблемы.
  • Огромные компоненты. Компонент на 1 000 строк трудно безопасно менять и людям, и ИИ. Просите делать их меньше.
  • Считать React-веб-приложение телефонным приложением. Оно работает в браузере, в том числе на телефонах, но не является приложением из App Store.

Что попросить у ИИ-конструктора

  • «Раздели эту страницу на небольшие именованные компоненты и скажи, в каком файле лежит каждый из них.»
  • «Сделай компонент ProductCard переиспользуемым, с name, price и image как props.»
  • «Сохраняй корзину в базе данных, чтобы она переживала обновление страницы.»
  • «Храни все API-ключи на сервере; React-код должен обращаться к нашему собственному API.»
  • «Добавь состояния загрузки и ошибок для данных, которые приходят с сервера.»
  • «Если для этих страниц важна видимость в поиске, предварительно отрисовывай их или используй серверный рендеринг.»
  • «Объясни простыми словами, что значит эта ошибка и из какого компонента она пришла.»

Более широкую картину см. в статье фронтенд и бэкенд, а для проверки того, что написал ИИ, — в статье как проверять код, написанный ИИ.

React в Mythex

Если вы не просите иного, Mythex начинает новые проекты на Vite + React + TypeScript + Tailwind с живым предпросмотром во время чата. В первом сообщении можно назвать другую конфигурацию, например «Используй Next.js» или «простая статическая HTML-страница», и Mythex выберет её по тексту; отдельного экрана настроек для этого нет. Подробнее о том, как выбирается технология, см. документацию. На бесплатном тарифе редактор кода доступен только для чтения; на Pro можно редактировать React-код напрямую и экспортировать проект, чтобы продолжить работу в другом месте.

Вопросы

Что такое React простыми словами?

React — это JavaScript-библиотека для создания пользовательских интерфейсов. Экраны собираются из повторно используемых частей — компонентов, например кнопки, карточки товара или целой страницы. Когда данные меняются, React сам обновляет то, что видно на экране.

React — это фреймворк или библиотека?

React называет себя библиотекой: он отвечает за построение интерфейса. Фреймворки, построенные на его основе, например Next.js, добавляют маршрутизацию, серверный рендеринг и загрузку данных.

Почему ИИ-конструкторы приложений используют React?

React — один из самых распространённых способов создавать веб-интерфейсы, поэтому у ИИ-моделей есть огромный объём React-кода и документации для обучения. Его компонентная структура также удобна для небольших и точечных изменений.

Вредит ли React SEO?

Сам по себе нет. Приложение на React, которое рисует всё в браузере, труднее читать некоторым поисковым роботам, но React можно предварительно отрисовывать или рендерить на сервере, например с Next.js. Это решает большинство проблем.

React — это то же самое, что React Native?

Нет. React создаёт веб-интерфейсы, которые работают в браузере. React Native использует те же идеи, чтобы создавать нативные приложения для iOS и Android. У них общие концепции, но не большая часть строительных блоков.

Mythex · Pricing · Создавайте что угодно с ИИ · Шаблоны сайтов и приложений · Сравнения Mythex · Глоссарий по созданию приложений с ИИ · Бесплатные инструменты для создания приложений с ИИ · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)