Каков назначение хука useId в React и когда его следует использовать?
Хук useId
был добавлен в React 18 и предназначен для генерации уникальных идентификаторов, которые могут использоваться в компонентах. Это особенно полезно в ситуациях, когда вам нужно привязать метки (<label>
) к элементам управления формами (<input>
, <select>
и т. д.) с помощью атрибута id
, чтобы обеспечить доступность и улучшение пользовательского опыта.
Когда использовать useId
Основные случаи использования useId
:
- Генерация уникальных идентификаторов: Если у вас несколько инстансов одного компонента и вам нужно сгенерировать уникальные
id
, чтобы избежать дублирования. - Улучшение доступности: При создании форм для пользователей с ограниченными возможностями важно убедиться, что метки привязаны к соответствующим элементам управления.
Пример использования useId
Приведенный ниже пример демонстрирует, как использовать useId
для генерации уникальных id
для меток и полей ввода.
import React, { useId } from 'react';
const InputWithLabel = ({ label }) => {
// Генерация уникального id
const id = useId();
return (
<div>
<label htmlFor={id}>{label}</label>
<input id={id} type="text" />
</div>
);
};
const MyForm = () => {
return (
<form>
<InputWithLabel label="Имя" />
<InputWithLabel label="Фамилия" />
<button type="submit">Отправить</button>
</form>
);
};
export default MyForm;
Как это работает?
- В компоненте
InputWithLabel
, мы вызываемuseId()
, который возвращает уникальный идентификатор для каждого экземпляра этого компонента. - Этот идентификатор передается как значение атрибута
htmlFor
для метки и как значение атрибутаid
для поля ввода. Это связывает метку с полем, что позволяет пользователю кликом на метку активировать соответствующее поле ввода. - Благодаря этому подходу каждый экземпляр компонента
InputWithLabel
будет иметь уникальныеid
, предотвращая конфликты с другими элементами на странице.
Заключение
Хук useId
является мощным инструментом для упрощения работы с уникальными идентификаторами в React, обеспечивая лучшее взаимодействие пользователя и доступность сайта. Используйте его, когда вам нужно генерировать уникальные идентификаторы в повторяющихся компонентах для улучшения структуры вашего кода и пользовательского опыта.