Что такое React
Разбор вопроса «Что такое React» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Что такое React
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает основное назначение React, его ключевые концепции (компоненты, VDOM) и преимущества перед другими библиотеками/фреймворками. Также важно показать осведомлённость о сфере применения (клиент/сервер).
Ключевые тезисы
- React — это JavaScript-библиотека с открытым исходным кодом для создания пользовательских интерфейсов (UI), разработанная Facebook.
- React использует компонентный подход, позволяя разбивать интерфейс на переиспользуемые и изолированные компоненты.
- React работает с виртуальным DOM (VDOM), что оптимизирует производительность за счёт минимизации прямых операций с реальным DOM.
- React поддерживает односторонний поток данных (unidirectional data flow), что упрощает отладку и предсказуемость состояния приложения.
- React может использоваться как на клиенте (в браузере), так и на сервере (SSR с Next.js или аналогичными фреймворками).
Подробный ответ
React — это JavaScript-библиотека для построения пользовательских интерфейсов, разработанная компанией Meta (Facebook). React использует компонентный подход и декларативный стиль описания UI.
Ключевые концепции
Компоненты
Основная единица React — компонент. Это переиспользуемый блок UI, который принимает входные данные (props) и возвращает JSX-разметку.
JSX
JSX — синтаксическое расширение JavaScript, позволяющее писать HTML-подобную разметку прямо в JavaScript-коде. JSX компилируется в вызовы React.createElement().
Однонаправленный поток данных
Данные в React передаются сверху вниз — от родительских компонентов к дочерним через props. Это делает поток данных предсказуемым и упрощает отладку.
Состояние (State)
State — внутренние данные компонента, при изменении которых React автоматически перерисовывает компонент.
React Hooks
Хуки позволяют использовать состояние и другие возможности React в функциональных компонентах:
useState— управление локальным состояниемuseEffect— побочные эффекты (запросы, подписки, таймеры)useContext— доступ к контексту без prop drillinguseMemo/useCallback— оптимизация производительностиuseRef— мутабельные ссылки и доступ к DOM
Virtual DOM
React использует Virtual DOM — легковесную копию реального DOM. При изменении состояния React сравнивает старое и новое дерево (diffing), вычисляет минимальный набор изменений и применяет их к реальному DOM.
Практические примеры
Пример 1
Функциональный компонент с состоянием
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Счёт: {count}</p>
<button onClick={() => setCount(count + 1)}>
+1
</button>
</div>
);
}useState возвращает текущее значение и функцию для его обновления. При вызове setCount компонент перерисовывается.
Пример 2
useEffect для загрузки данных
import { useState, useEffect } from 'react';
function UserList() {
const [users, setUsers] = useState([]);
useEffect(() => {
fetch('/api/users')
.then(res => res.json())
.then(data => setUsers(data));
}, []); // [] — выполнить один раз при монтировании
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}Пустой массив зависимостей [] означает, что эффект выполнится только при монтировании компонента.
Частые ошибки
- Путаница между React и фреймворками, такими как Angular. React — это библиотека, а не полноценный фреймворк, что означает, что он предоставляет только инструменты для создания интерфейсов, но не решения для маршрутизации, управления состоянием и других задач.
- Неправильное использование состояния, например, прямое изменение состояния вместо использования функций обновления, таких как
setStateилиuseState.
Связанные темы
- JSX: Синтаксическое расширение JavaScript, позволяющее писать HTML-подобный код в React.
- Состояние и пропсы: Основные концепции управления данными в React.
- React Hooks: Современный подход к управлению состоянием и побочными эффектами в функциональных компонентах.
- Next.js: Фреймворк для серверного рендеринга и статической генерации React-приложений.
Follow-up вопросы
Чем React отличается от других библиотек или фреймворков, например, Angular?
Уровень: basic
React — это библиотека, а Angular — полноценный фреймворк. React фокусируется только на представлении (View), тогда как Angular предоставляет больше встроенных решений (например, DI, роутинг). React использует JSX и виртуальный DOM, а Angular — шаблоны и двустороннее связывание данных.
Что такое виртуальный DOM и как он работает в React?
Уровень: intermediate
Виртуальный DOM — это легковесная копия реального DOM, хранящаяся в памяти. React сравнивает изменения в виртуальном DOM (diffing) и обновляет только те части реального DOM, которые действительно изменились (reconciliation), что повышает производительность.
Что такое JSX и зачем он нужен в React?
Уровень: basic
JSX — это синтаксическое расширение JavaScript, позволяющее писать HTML-подобный код в JavaScript. Он упрощает создание React-компонентов, делая их более читаемыми. Babel компилирует JSX в вызовы React.createElement().
Как React управляет состоянием приложения? Какие есть способы?
Уровень: intermediate
React предлагает несколько способов: локальное состояние компонента (useState, классовые this.state), контекст (Context API) для передачи данных без пропсов и сторонние решения (Redux, MobX). Выбор зависит от сложности приложения.
Что такое Fiber в React и как это влияет на рендеринг?
Уровень: advanced
Fiber — это новый алгоритм реконсиляции (reconciliation) в React 16+. Он позволяет разбивать рендеринг на части (инкрементальный рендеринг), приоритезировать задачи (например, анимации) и работать в фоновом режиме, улучшая производительность и отзывчивость.
Что такое Virtual DOM
Разбор вопроса «Что такое Virtual DOM» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Что такое useEffect
Разбор вопроса «Что такое useEffect» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.