Im пытается реализовать событие hover, но onMouseLeave не всегда срабатывает при уходе с элементом, особенно при быстром перемещении курсора по элементам. Я пробовал Chrome, Firefox и Internet Explorer, но в каждом браузере появилась такая же проблема.Реагировать событие onMouseLeave не запускается при быстром перемещении курсора
Мой код:
import React from 'react';
import Autolinker from 'autolinker';
import DateTime from './DateTime.jsx'
class Comment extends React.Component{
constructor(props){
super(props);
this.handleOnMouseOver = this.handleOnMouseOver.bind(this);
this.handleOnMouseOut = this.handleOnMouseOut.bind(this);
this.state = {
hovering: false
};
}
render(){
return <li className="media comment" onMouseEnter={this.handleOnMouseOver} onMouseLeave={this.handleOnMouseOut}>
<div className="image">
<img src={this.props.activity.user.avatar.small_url} width="42" height="42" />
</div>
<div className="body">
{this.state.hovering ? null : <time className="pull-right"><DateTime timeInMiliseconds={this.props.activity.published_at} byDay={true}/></time>}
<p>
<strong>
<span>{this.props.activity.user.full_name}</span>
{this.state.hovering ? <span className="edit-comment">Edit</span> : null}
</strong>
</p>
</div>
</li>;
}
handleOnMouseOver(event){
event.preventDefault();
this.setState({hovering:true});
}
handleOnMouseOut(event){
event.preventDefault();
this.setState({hovering:false});
}
newlines(text) {
if (text)
return text.replace(/\n/g, '<br />');
}
}
export default Comment;
Эй, как вы определения OnMouseLeave не срабатывает? Вы пытались добавить инструкции console.log? Мне интересно, если вместо этого у вас плохой порядок для onMouseOver/onMouseOut, потому что настройка состояний не является синхронным действием. Я создал простой компонент реакции, и я не мог легко воспроизвести. – noveyak
Случается, что при выходе из элемента функция onMouseLeave не вызывается .. Да, я попытался с протоколированием, и функция не вызывается .. тогда как мне реализовать событие hover? – zazmaister
Вы можете попробовать onMouseOver/onMouseOut, чтобы убедиться, что он работает лучше для вас, так как я думаю, что эти события лучше поддерживаются, хотя поведение этого немного отличается, поэтому может оказаться непригодным для вашего приложения. – noveyak