【发布时间】:2018-08-15 06:55:54
【问题描述】:
如何在 RxJS 中延迟 300 毫秒并仅从 mouseLeave 事件流 Observable 中获取最后一个事件?我只想获取最新事件并将其延迟到 300 毫秒,然后触发一个方法。
class MouseOverComponent extends React.Component {
state = {menuIsOpen: false}
componentDidMount() {
this.mouseLeave$ = Rx.Observable.fromEvent(this.mouseDiv, "mouseleave")
.delay(300)
.throttleTime(300)
.subscribe(() => /* here I want to hide the div */);
}
componentWillUnmount() {
this.mouseLeave$.unsubscribe();
}
menuToggle = e => {
e && e.preventDefault()
let {menuIsOpen} = this.state
menuIsOpen = !menuIsOpen
this.setState({menuIsOpen, forceState: true})
}
render() {
// const menuStateClass = ... resolving className with state
return (
<div ref={(ref) => this.mouseDiv = ref}>
Move the mouse and look at the console...
</div>
);
}
}
但它也无法触发以前的事件。当我快速鼠标离开时,它的隐藏和显示无法控制。
当鼠标离开 div 并等待 300 毫秒然后隐藏时,我想要 mouseDiv。
【问题讨论】:
-
您是否尝试过使用forkJoin?
标签: javascript reactjs rxjs