Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: static, array, index, key

Что значит "статичность массива" в контексте ключей React

Этот вопрос проверяет понимание условий, при которых можно безопасно использовать индексы массива в качестве ключей в 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>
    );
}

Проблемы использования индексов в динамических массивах

1. Некорректное обновление состояния

jsx

// Начальное состояние: ['Task 1', 'Task 2', 'Task 3']
// Удаляем первый элемент
// Ключи меняются: 0->'Task 2', 1->'Task 3'
// React может сохранить состояние не для тех элементов

2. Проблемы с производительностью

  • Лишние ререндеры - React не может правильно определить измененные элементы

  • Некорректные анимации - элементы могут анимироваться неправильно

Практические рекомендации

  • Всегда предпочитайте уникальные id из данных

  • Используйте индексы только для действительно статических данных

  • Генерируйте ключи если нет естественных идентификаторов

Как проверить статичность массива

Массив можно считать статическим если:

  • Определен как константа и не изменяется

  • Содержит фиксированный набор элементов (дни недели, месяцы, цвета радуги)

  • Не зависит от props или state компонента

Вывод: Используйте индексы в качестве ключей только для по-настоящему статических массивов, которые гарантированно не изменяются. Для динамических данных всегда используйте уникальные идентификаторы из данных или генерируйте стабильные ключи.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • React

    React

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

#static

#array

#index

#key

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