Логотип 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?

Будет ли ре-рендер компонента, если в useState записывается новый объект с теми же данными?

Зачем в useState можно передать функцию вместо значения? В чём отличие и когда это нужно?

Что можно положить в initial value useState?

  • Рейтинг:

    3

  • Сложность:

    6

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

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

    4

  • Сложность:

    5

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

    4

  • Сложность:

    4

Да, ре-рендер произойдет. React сравнивает предыдущее и новое состояние с помощью строгого сравнения (===). Если вы передаете новый объект, даже с теми же данными, это новый объект в памяти, поэтому React считает состояние измененным и запускает ре-рендер компонента.
Подробнее
  • Рейтинг:

    4

  • Сложность:

    4

Передача функции в useState позволяет выполнить инициализацию состояния только один раз при первом рендере. Это полезно, когда начальное значение требует сложных вычислений или чтения из localStorage. В отличие от передачи значения, функция не будет вызываться при каждом обновлении компонента, что повышает производительность.
Подробнее
  • Рейтинг:

    4

  • Сложность:

    2

В useState можно положить любое значение: примитив (число, строка, булево), объект, массив, null, undefined или функцию. Если передать функцию, React вызовет её только при первом рендере — это называется ленивой инициализацией. Нельзя передавать Promise или другие асинхронные значения напрямую.
Подробнее
  • Рейтинг:

    3

  • Сложность:

    6

  • Рейтинг:

    5

  • Сложность:

    3

  • Рейтинг:

    5

  • Сложность:

    4

  • Рейтинг:

    5

  • Сложность:

    5

  • Рейтинг:

    5

  • Сложность:

    5