Я только рекомендую сделать эту функцию через
debounce (или аналоги):
constructor(props) {
super(props);
const finalMouseDelay = props.mouseDelay || 300;
this.handleMouseLeave = this.handleMouseLeave.bind(this);
this.handleMouseEnter = this.handleMouseEnter.bind(this);
this.toggleHover = _.debounce(this.toggleHover.bind(this), finalMouseDelay);
this.state = { hover: false };
}
handleMouseLeave() {
this.toggleHover(false);
}
handleMouseEnter() {
this.toggleHover(true);
}
toggleHover(to) {
this.setState({ hover: to });
}
Рабочий пример тут -
jsfiddle.net/yuvuyrhv/24
Иначе у Вас будут
дикие лаги, если пользователь навел мышку\убрал мышку\снова навел ... с интервалом быстрее, чем заданный вами