useFocusVisible

Хук для управления визуальным отображением фокуса при навигации с клавиатуры. Позволяет показывать стили фокуса только при клавиатурном вводе, улучшая пользовательский опыт и доступность.

Объект со свойствами:

СвойствоТипОписание
focusVisiblebooleanФлаг видимости фокуса (true только при клавиатурной навигации)
onFocus(event: FocusEvent) => voidОбработчик события фокуса
onBlur(event: FocusEvent) => voidОбработчик события потери фокуса
const AccessibleButton = () => {
  const { focusVisible, onFocus, onBlur } = useFocusVisible();
 
  return (
    <button
      onFocus={onFocus}
      onBlur={onBlur}
      style={{
        outline: focusVisible ? '2px solid #2D81E0' : 'none',
        transition: 'outline 0.15s ease-in',
      }}
    >
      Кнопка с умным фокусом
    </button>
  );
};
 
// Убедитесь, что всё приложение обёрнуто в AppRoot
const App = () => (
  <AppRoot>
    <AccessibleButton />
  </AppRoot>
);
  • Умное определение источника фокуса

    Стили фокуса активируются только при навигации с помощью Tab/Shift+Tab и использовании клавиатурных стрелок.

  • Игнорирование использование мыши

    При клике мышью фокус-стили не отображаются.

Используйте для:

  • Кастомных элементов управления (кнопки, ссылки, поля ввода).
  • Компонентов с собственной логикой фокуса.
  • Доступных интерфейсов (a11y).
  • Сочетайте с CSS-переходами для плавного появления фокуса.