Как обрабатывать события Hover в React

Как обрабатывать события Hover в React

9 января 2024 г.

В этом руководстве вы узнаете, как обрабатывать события наведения — одно из наиболее распространенных взаимодействий пользователя в веб-приложениях.

onHover в React

В библиотеке нет встроенного события onHover, но есть способ обрабатывать события наведения в React.

Чтобы реализовать эту функцию, вам нужны два обработчика событий: onMouseEnter для обработки, когда мышь входит в границы элемента, и onMouseLeave для обработки, когда мышь покидает границы. Обработка этих двух событий гарантирует согласованную работу обработчика событий наведения.

Теперь давайте рассмотрим потенциальные варианты использования onHover в React.

В нашем первом примере давайте установим обработчики onMouseEnter и onMouseLeave, чтобы показывать или скрывать компонент, когда пользователь наводит на него курсор.

function App() {
  const [hidden, setHidden] = useState(true);
  return (
    <div
      className="container"
      onMouseEnter={() => setHidden(false)}
      onMouseLeave={() => setHidden(true)}
    >
      {hidden ? null : <h1>Hovering</h1>}
    </div>
  );
}

В этом примере у нас есть переменная состояния hidden, и ее значение является логическим. Внутри JSX мы смотрим на логическое значение, чтобы условно отобразить заголовок с надписью «Hovering».

Обработчики событий onMouseEnter и onMouseLeave устанавливаются в элементе div. Событие onMouseEnter устанавливает для hidden значение false, поэтому текст заголовка отображается. onMouseLeave устанавливает для него значение true, поэтому, когда мышь покидает div, текст заголовка снова скрывается.

Вот живая демонстрация. иллюстрируют, как onMouseEnter и onMouseLeave могут копировать обработчик событий onHover в React.

-

Как видите, эффект наведения активируется, даже если указатель мыши находится на границе элемента.

Если вам понравилось это руководство, в блоге SimpleFrontEnd есть множество похожих руководств по React с примерами.

onHover для условного оформления элементов в React

Подобно условному рендерингу вы можете использовать обработчики событий onMouseEnter и onMouseLeave для условного оформления элементов в React.

Если быть более конкретным, обработчики событий обновляют состояние, которое мы можем использовать для условного применения стилей в JSX.

function App() {
  const [warning, setWarning] = useState(true);
  return (
    <div
      className="container"
      onMouseEnter={() => setWarning(false)}
      onMouseLeave={() => setWarning(true)}
    >
      <h1 style={{ color: warning ? "goldenrod" : "green" }}>
        Please hover over the container{" "}
      </h1>
    </div>
  );
}

В этом примере обработчики событий onMouseEnter и onMouseLeave обновляют переменную состояния warning. Который мы используем для изменения цвета текста в контейнере.

Вы также можете рассматривать это как программную альтернативу использованию селектора :hover в CSS.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE