Проверяет понимание механизма согласования React и роли ключей при повторном использовании DOM-элементов.
Когда вы рендерите список компонентов без указания явных ключей, React использует индекс элемента в массиве в качестве ключа по умолчанию. Это может привести к неожиданному поведению при переключении между разными массивами данных.
React сравнивает виртуальные DOM-деревья с помощью алгоритма сравнения. Если ключи элементов совпадают, React считает, что это один и тот же элемент, и обновляет только его пропсы, сохраняя состояние компонента.
function App() {
const [items, setItems] = useState([{id: 1, text: 'A'}, {id: 2, text: 'B'}]);
return (
<div>
{items.map((item, index) => (
<InputComponent key={index} value={item.text} />
))}
<button onClick={() => setItems([{id: 3, text: 'C'}, {id: 4, text: 'D'}])}>
Сменить данные
</button>
</div>
);
}В этом примере при нажатии на кнопку React повторно использует существующие компоненты InputComponent, потому что их индексы (0 и 1) совпадают. Состояние внутри компонентов (например, введенный текст) сохранится, хотя данные полностью изменились.
Всегда используйте уникальные и стабильные ключи, например, идентификаторы из базы данных:
{items.map(item => (
<InputComponent key={item.id} value={item.text} />
))}Явные ключи необходимы для корректной работы React при рендеринге списков. Они помогают избежать ошибок с сохранением состояния и обеспечивают правильное обновление компонентов при изменении данных.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию