Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Специализация

Python Backend Developer

Java Backend Developer

Node.js Backend Developer

Golang Backend Developer

React Frontend Developer

Посмотреть все

Выберите навыки

React

React

JavaScript

JavaScript

Git

Git

Redux

Redux

Webpack

Webpack

Посмотреть все

Сложность

1-3

4-6

7-8

9-10

Рейтинг вопросов

1

2

3

4

5

Подпишись на React Developer в телеграм

Вопросы React Frontend Developer


Как работает useReducer и когда его использовать вместо useState или Redux?

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

  1. Когда состояние сложное (много связанных значений, например, форма с валидацией).

  2. Когда логика обновления нетривиальна (много условий, побочных эффектов).

  3. Для оптимизации производительности (редюсеры помогают избежать лишних ререндеров).

  4. Как упрощенная альтернатива Redux (если не нужен глобальный стейт).

Подробнее

Для чего нужен useState?

useState нужен для хранения и изменения состояния внутри функционального компонента. Он позволяет React отслеживать изменения данных и перерисовывать компонент. Состояние сохраняется между рендерами. Без useState компонент был бы статичным. Это один из базовых хуков React.

Подробнее

Какие аргументы может принимать сеттер из useState?

Сеттер из useState может принимать либо новое значение, либо функцию-обновитель. Функция-обновитель получает предыдущее состояние и возвращает новое. Второй вариант нужен, когда новое состояние зависит от предыдущего. React сам решает, когда применить обновление.

Подробнее

Чем useRef отличается от useState?

useState используется для хранения данных, изменение которых должно вызывать перерендер компонента. useRef хранит изменяемое значение, изменение которого не вызывает перерендер. useRef часто применяют для доступа к DOM-элементам или для хранения технических значений (таймеры, предыдущие значения). Выбор зависит от того, влияет ли изменение значения на отображение UI.

Подробнее

Почему useState не реагирует на мутацию объекта без смены ссылки?

useState сравнивает старое и новое значение по ссылке. Если ссылка не изменилась, React считает, что состояние осталось тем же самым. При мутации объекта ссылка остаётся прежней, поэтому ререндер не запускается. Чтобы React обновился, нужно создать новый объект.

Подробнее

Как связать внешний объект с React через useRef?

Как оптимизировать компонент с большим количеством useState?

  • Рейтинг:

    3

  • Сложность:

    6

useRef позволяет хранить ссылку на внешний объект между рендерами без их запуска. Через ref.current можно читать и изменять данные, но React не будет автоматически перерисовываться. Чтобы изменения отразились в UI, нужно дополнительно инициировать ререндер, например через useState или подписку. useRef подходит для хранения ссылок, а не реактивного состояния.

Подробнее
  • Рейтинг:

    4

  • Сложность:

    5

Когда компонент использует много useState, это может привести к частым ререндерам и снижению производительности. Оптимизировать можно несколькими способами: объединить связанные состояния в один объект с помощью useReducer, чтобы обновлять их одним действием. Использовать мемоизацию через React.memo, useMemo и useCallback, чтобы предотвращать лишние вычисления и рендеры дочерних компонентов. Также стоит разделить большой компонент на более мелкие, изолировав состояния, которые меняются независимо. Это уменьшит область перерисовки.
Подробнее
  • Рейтинг:

    3

  • Сложность:

    6

  • Рейтинг:

    5

  • Сложность:

    3

  • Рейтинг:

    5

  • Сложность:

    4

  • Рейтинг:

    5

  • Сложность:

    5

  • Рейтинг:

    5

  • Сложность:

    5