Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: React, state management, immutability, array map

Как реализовать изменение статуса элемента списка?

Вопрос проверяет понимание управления состоянием в React и методов обновления данных в списках.

Короткий ответ

Для изменения статуса элемента списка в React нужно использовать метод map, который создает новый массив. Внутри map находят элемент по id и возвращают его копию с обновленным статусом. Затем новый массив устанавливают через setState. Важно не мутировать исходный массив, а создавать новый.

Длинный ответ

Изменение статуса элемента списка в React

В React состояние (state) должно обновляться иммутабельно, то есть без прямого изменения существующих данных. Для списков это означает, что мы не можем просто изменить свойство объекта внутри массива — нужно создать новый массив с обновленным элементом.

Основной подход

Используйте метод map, который проходит по каждому элементу массива и возвращает новый массив. Внутри колбэка найдите нужный элемент (например, по id) и верните его копию с измененным статусом. Для остальных элементов верните их без изменений.

const [items, setItems] = useState([
  { id: 1, status: 'active' },
  { id: 2, status: 'inactive' }
]);

const toggleStatus = (id) => {
  setItems(prevItems =>
    prevItems.map(item =>
      item.id === id
        ? { ...item, status: item.status === 'active' ? 'inactive' : 'active' }
        : item
    )
  );
};

Почему это важно

Иммутабельность гарантирует, что React может эффективно отслеживать изменения и перерисовывать только те компоненты, которые действительно изменились. Прямая мутация (например, items[0].status = 'new') не вызовет перерендер, так как ссылка на массив останется прежней.

Альтернативные методы

  • findIndex + splice (не рекомендуется) — создает копию массива через spread, затем изменяет элемент по индексу.
  • filter + concat — для удаления или добавления элементов, но не для обновления.

Вывод

Используйте map для обновления статуса элемента списка в React. Это простой, читаемый и соответствующий принципам иммутабельности способ, который гарантирует корректную работу виртуального DOM и предотвращает баги с состоянием.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • React

    React

Ключевые слова

#React

#state management

#immutability

#array map

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию