Поиск по сайту
Ctrl + K
Вопросы по React

Каков назначение хука 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, обеспечивая лучшее взаимодействие пользователя и доступность сайта. Используйте его, когда вам нужно генерировать уникальные идентификаторы в повторяющихся компонентах для улучшения структуры вашего кода и пользовательского опыта.