> Корректно ли генерировать уникальный id для ключей в React при отсутствии id в данных с бэка и вызовет ли это проблемы с оптимизацией рендера (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Налитек

Стек: React

> Пример ответа

Да, генерировать уникальный id для ключей в React при отсутствии id в данных с бэка - это корректная практика, но с оговорками. Если вы используете индекс массива как ключ, это может вызвать проблемы с производительностью и состоянием компонентов при изменении порядка, добавлении или удалении элементов. Лучше генерировать стабильный ключ на основе уникальных свойств данных (например, комбинация name + timestamp или использование библиотеки uuid). Однако, если данные статичны и не изменяются динамически, индекс допустим.

Проблемы с оптимизацией рендера (например, с React.memo или shouldComponentUpdate) возникают, если ключи нестабильны (меняются при каждом рендере). Это заставляет React пересоздавать DOM-элементы, а не обновлять их, что снижает производительность. Чтобы избежать этого, генерируйте ключи один раз при получении данных (например, в useEffect или с помощью useMemo), а не при каждом рендере. Пример:

JSX
const itemsWithKeys = useMemo(() =>
data.map((item, index) => ({ ...item, key: item.id || `item-${index}-${item.name}` })),
[data]
);

Такой подход гарантирует стабильность ключей и не нарушает оптимизацию рендера.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью