Этот вопрос проверяет понимание условий, при которых можно безопасно использовать индексы массива в качестве ключей в React компонентах.
"Статичность массива" означает, что порядок, количество и состав элементов в массиве никогда не изменяются после первоначального рендера. Если массив гарантированно остается неизменным - элементы не добавляются, не удаляются и не меняют порядок - тогда можно использовать индекс массива как ключ. Однако в реальных приложениях такие ситуации редки, поэтому лучше всегда использовать уникальные идентификаторы из данных.
Статичность массива - это важное понятие, определяющее возможность безопасного использования индексов в качестве ключей в React.
Статический массив обладает следующими характеристиками:
Неизменный порядок - элементы всегда остаются в той же последовательности
Постоянное количество - элементы не добавляются и не удаляются
Стабильный состав - сами элементы не заменяются на другие
jsx
const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
function MonthList() {
return (
<ul>
{MONTHS.map((month, index) => (
<li key={index}>{month}</li> // Безопасно, так как массив статичен
))}
</ul>
);
}jsx
function TodoList({ todos }) {
// ОПАСНО: массив динамический, элементы могут добавляться/удаляться
return (
<ul>
{todos.map((todo, index) => (
<li key={index}>{todo.text}</li> // Может вызвать проблемы
))}
</ul>
);
}jsx
// Начальное состояние: ['Task 1', 'Task 2', 'Task 3']
// Удаляем первый элемент
// Ключи меняются: 0->'Task 2', 1->'Task 3'
// React может сохранить состояние не для тех элементовЛишние ререндеры - React не может правильно определить измененные элементы
Некорректные анимации - элементы могут анимироваться неправильно
Всегда предпочитайте уникальные id из данных
Используйте индексы только для действительно статических данных
Генерируйте ключи если нет естественных идентификаторов
Массив можно считать статическим если:
Определен как константа и не изменяется
Содержит фиксированный набор элементов (дни недели, месяцы, цвета радуги)
Не зависит от props или state компонента
Вывод: Используйте индексы в качестве ключей только для по-настоящему статических массивов, которые гарантированно не изменяются. Для динамических данных всегда используйте уникальные идентификаторы из данных или генерируйте стабильные ключи.