monochromer
@monochromer
DIVeloper

Как сгенерировать событие onMouseLeave в React?

Всем здоровья!
Есть элемент "Message", на который навешивается некоторая логика по событию onMouseEnter и убирается по onMouseLeave. При этом внутри есть другой элемент - "Dropdown". При закрытии этого dropdown'a хочется, чтобы срабатывало событие onMouseLeave, если курсор не над элементом "Message" после закрытия dropdown'а. Как у Slack.

Демо - https://codepen.io/monochromer/pen/NWPrvze?editors=0010
  • Вопрос задан
  • 360 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Как вариант:

1. Добавьте div-у событие onMouseMove, в нем запоминайте координаты мышки
onMouseMove={e => { this.mouse = { clientX: e.clientX, clientY: e.clientY }} }


2. В процедуре close Проверяйте координаты и вызывайте disable в случае выхода за них

const rect = document.querySelector('.Message').getBoundingClientRect()
if (this.mouse.clientX < rect.left || 
  this.mouse.clientX > rect.right || 
  this.mouse.clientY < rect.top ||
  this.mouse.clientY > rect.bottom) {
  this.disable()
}


Строка
document.querySelector('.Message')

просто для примера, искать по хорошему надо через ref

https://codepen.io/dimoff66/pen/zYxBQvo?editors=0010
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы