Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: optimizations

Можно ли рандомные key в React задать?

Этот вопрос проверяет понимание работы key в React и возможных подводных камней при их генерации.

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

Да, но так делать не стоит.
React позволяет использовать случайные key (например, Math.random() или crypto.randomUUID()), но это приводит к:

  • Потере производительности (React не сможет правильно сравнивать элементы).

  • Ошибкам в работе компонентов (например, неожиданный ререндер полей формы).

  • Лучше использовать стабильные уникальные значения (ID из данных, хеши, индексы — с осторожностью).

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

Зачем нужны key в React?

React использует key, чтобы отслеживать изменения в списках и понимать, какие элементы нужно обновить, а какие — переиспользовать. 

Проблемы с рандомными key

Если генерировать key динамически (например, key={Math.random()}):

  1. Потеря состояния компонентов

    • При ререндере React увидит новые key и решит, что это новые элементы, а не обновлённые.

    • Например, если у вас есть форма в списке, её состояние сбросится.

  2. Снижение производительности

    • React не сможет оптимизировать обновления, так как key меняются каждый раз.

Что использовать вместо рандомных key?

  • Уникальные ID из данных (лучший вариант):

    {items.map(item => <div key={item.id}>{item.name}</div>)}
  • Хеши от содержимого (если нет ID):

    key={`${item.name}-${item.price}`}  
  • Индексы массива (только если список статичен и нет альтернатив):

    {items.map((item, index) => <div key={index}>{item.name}</div>)}

Пример ошибки с рандомными key

// Плохо: состояние сбрасывается при каждом рендере
{items.map(item => (
  	<input key={Math.random()} defaultValue={item.value} />
))}

// Правильно: key стабильны
{items.map(item => (
  	<input key={item.id} defaultValue={item.value} />
))}

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • React

    React

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

#optimizations

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