I need to throttle the mousemove event, and I follow the tips below to build the method, but doesn't work: Perform debounce in React.js
Here is my code (http://jsbin.com/binesofepo/edit?js,console,output):
class Tool extends Component { constructor(props) { super(props); this._onMouseMove = _.throttle(this._onMouseMove.bind(this), 1000) } render() { return ( <div ref="tool" className="tool"> <div ref="toolBody" className="tool__body" onMouseMove={this._onMouseMove}></div> </div> ) } _onMouseMove(e) { e.persist() console.log(e.screenX) } }
If you keep mousemove on the tool__body
, It'll get lots of below warning:
Warning: This synthetic event is reused for performance reasons. If you're seeing this, you're accessing the property
screenX
on a released/nullified synthetic event. This is set to null. If you must keep the original synthetic event around, use event.persist(). See fb.me/react-event-pooling for more information.
my react version: "15.0.2"
Seems e.persist()
doesn't work well. Any idea? :D