В JSX атрибут «key» используется при отображении списка элементов. Каждому элементу в списке должен быть присвоен уникальный «ключ». «Ключ» помогает React определить, какие элементы были изменены, добавлены или удалены из списка.
Включение атрибута «ключ» важно по следующим причинам:
-
Эффективные обновления: когда React согласовывает список и обнаруживает «ключевое» изменение, он может обновлять только конкретный элемент, который изменился, вместо повторной визуализации всего списка. Это повышает производительность и уменьшает количество ненужных манипуляций с DOM.
-
Изменение порядка: если порядок элементов списка меняется, наличие атрибута «key» позволяет React идентифицировать точный элемент, который переместился, и обновить его соответствующим образом. Без «ключа» React может ошибочно переместить элементы или вызвать ненужный повторный рендеринг.
-
Стабильная идентичность компонента. Атрибут «ключ» обеспечивает стабильную идентичность каждого компонента в списке, даже если порядок или содержимое списка изменяются. Это особенно важно, когда элементы списка содержат состояние или имеют собственные методы жизненного цикла.
Вот несколько способов назначения «ключей» в списках JSX:
-
Использование уникальных идентификаторов. Если элементы вашего списка имеют уникальные идентификаторы, например идентификаторы базы данных или сгенерированные UUID, вы можете использовать их как «ключи». Например:
{items.map(item => <li key={item.id}>{item.name}</li>)} -
Индекс как ключ. Если элементы вашего списка не имеют уникальных идентификаторов, вы можете использовать индекс каждого элемента в качестве «ключа». Однако этот метод следует использовать с осторожностью, особенно если список можно переупорядочить или динамически изменить. Не рекомендуется, если элементы списка можно часто добавлять или удалять. Пример:
{items.map((item, index) => <li key={index}>{item}</li>)} -
Стабильные свойства. Если элементы вашего списка имеют стабильные свойства, которые могут служить уникальными идентификаторами, вы можете объединить эти свойства для создания составного ключа. Убедитесь, что полученный ключ уникален во всем списке. Например:
{items.map(item => <li key={item.category + item.id}>{item.name}</li>)}