Открыть сервис

React

React (также React.js или ReactJS) — это открытая JavaScript-библиотека для создания пользовательских интерфейсов, разрабатываемая компанией Meta (организация признана экстремистской и запрещена в РФ). React позволяет декларативно описывать состояния интерфейса на разных этапах работы приложения и эффективно обновлять отображение при изменении данных. Библиотека поддерживается сообществом разработчиков и используется для построения одностраничных приложений (SPA), мобильных приложений (React Native) и серверного рендеринга.

История

Создание и выход первой версии

React был создан инженером Facebook (организация признана экстремистской и запрещена в РФ) Джорданом Уоком (Jordan Walke) в 2011 году. Уок работал над улучшением новостной ленты социальной сети, где требовалось оперативно обновлять большое количество элементов интерфейса без полной перезагрузки страницы. Изначально фреймворк получил название FaxJS. В 2012 году инструмент был портирован на Instagram (организация признана экстремистской и запрещена в РФ), а в мае 2013 года состоялся публичный релиз React на конференции JSConf US.

Эволюция библиотеки

В 2015 году появилась версия React 0.14, в которой была анонсирована поддержка серверного рендеринга через ReactDOMServer. Релиз React 16 (2017 год) привнёс фундаментальное изменение архитектуры — Fiber, что позволило дробно обновлять интерфейс и поддерживать асинхронный рендеринг. Начиная с React 16.8 (2019 год) библиотека перешла на хуки (hooks) как основной способ работы с состоянием и побочными эффектами. В 2022 году вышла версия React 18 с автоматическим батчингом состояния, поддержкой Suspense для серверного рендеринга и новым API хуков.

В 2020 году компания Meta (признана экстремистской и запрещена в РФ) перевела разработку React под управление независимого фонда React Foundation, однако в 2022 году поддержка была возвращена обратно в Meta (организация признана экстремистской, деятельность запрещена в РФ).

Ключевые концепции

Декларативный подход

React использует декларативный синтаксис: разработчик описывает, как интерфейс должен выглядеть при данном состоянии данных, а библиотека самостоятельно вычисляет и применяет необходимые изменения DOM. Это достигается с помощью виртуального DOM (Virtual DOM) — легковесной объектной модели, с которой React сравнивает текущее состояние и последующее обновление.

Компонентная архитектура

Интерфейс в React строится из компонентов — изолированных переиспользуемых блоков (классов или функций). Компонент может иметь собственное состояние (state) и получать данные через свойства (props). Каждый компонент должен возвращать один корневой элемент (или фрагмент). Такая архитектура упрощает разработку крупных приложений за счёт инкапсуляции и композиции.

JSX

Для описания интерфейса используется JSX — расширение JavaScript, позволяющее писать разметку, похожую на HTML, внутри JavaScript-кода. JSX обрабатывается компилятором (например, Babel) и преобразуется в вызовы React.createElement(). Пример:

``jsx const element = <h1>Привет, мир!</h1>; ReactDOM.render(element, document.getElementById('root')); ``

Состояние и пропсы

Работа с состоянием до 2019 года велась через классовые компоненты с методами setState. Современный React использует хуки useState и useReducer.

Хуки (Hooks)

Хуки позволяют использовать state и другие возможности React без написания классов. Основные встроенные хуки:

С появлением хуков классовые компоненты стали считаться устаревшими, хотя официально продолжают поддерживаться.

Экосистема

Управление состоянием

Для крупных приложений требуются стейт-менеджеры, которые выходят за рамки возможностей встроенного useState. К популярным библиотекам относятся:

Маршрутизация

Встроенная маршрутизация в React отсутствует, что привело к созданию таких библиотек, как React Router (наиболее популярная), Reach Router и TanStack Router. React Router позволяет определять клиентские маршруты с динамическим рендерингом компонентов.

Серверный рендеринг

React поддерживает рендеринг на стороне сервера (SSR) с помощью ReactDOMServer.renderToString() или через интеграцию с фреймворками. Современным стандартом SSR для React является Next.js — полноценный фреймворк, который добавляет генерацию статического контента (SSG), API-маршруты и файловую систему маршрутов.

React Native

React Native — это фреймворк, позволяющий создавать мобильные приложения для iOS и Android на основе React. Вместо компонентов HTML используются нативные компоненты (View, Text, ScrollView). Состояние и логика пишутся на JavaScript (или TypeScript), что снижает порог входа для веб-разработчиков.

Тестирование

Для тестирования React-компонентов применяются библиотеки Jest (модульное тестирование), React Testing Library (интеграционные тесты) и Cypress (сквозные тесты). React Testing Library продвигает тестирование с точки зрения пользователя, избегая проверок внутреннего состояния.

Версии и поддержка

График выхода

React придерживается семантического версионирования. Начиная с 2020 года, актуальная мажорная версия — 18. Обновления выходят по мере разработки, официальные патчи выпускаются каждые несколько месяцев для актуальной стабильной версии.

Cтатус LTS и устаревшие версии

На 2025 год версия 17 считается устаревшей и не получает обновлений (последний патч — 17.0.2, вышедший в 2021 году). Версия 18 является единственной стабильной версией React. Пользователей версии 16 призывают к миграции, так как поддержка этой версии была прекращена.

Преимущества и недостатки

Преимущества

Недостатки

Применение

React используется в веб-приложениях крупнейших IT-компаний. Среди известных проектов на React:

Кроме того, React широко используется в образовательных проектах и стартапах как начальный стек для интерфейсов.

Лицензирование

React распространяется под лицензией MIT (с 2017 года). Ранее, с выхода версии 0.3.0 и до обновления лицензии в 2017 году, библиотека использовала лицензию BSD с дополнительным патентом (Facebook Patent Addendum). После критики со стороны сообщества компания Meta (признана экстремистской и запрещена в РФ) перевела React на MIT-лицензию, сняв патентные ограничения.

Критика и обсуждение

Основные объекты критики React:

Источники

  1. React Documentation (react.dev/hooks, react.dev/versions).
  2. «React: Up & Running, 2nd Edition» — Stoyan Stefanov (O’Reilly Media, 2021).
  3. Статья «React: A JavaScript library for building user interfaces» — Meta Open Source (2023).
  4. «Fiber Architecture» — React Official Blog (2017).
  5. «The History of React.js on a Timeline» — RisingStack blog (2020).
  6. Документация по React Native (reactnative.dev).
  7. «Next.js vs React: The Ultimate Comparison» — Smashing Magazine (2024).
  8. Лицензия React (react.dev/license).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →