React.js控制鼠标移动事件保持抛出event.persist()错误
React.js throttle mousemove event keep throwing event.persist() error
我需要限制鼠标移动事件,我按照下面的提示来构建方法,但不起作用:在React.js中执行debounce
下面是我的代码(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)
}
}
如果你在tool__body
上保持鼠标移动,它会得到很多以下警告:
警告:由于性能原因重用了此合成事件。如果您看到这个,您正在访问已释放/无效合成事件上的属性
screenX
。它被设置为null。如果必须保留原始合成事件,请使用event.persist()。看到facebook。Me/react-事件池获取更多信息。
my react version: "15.0.2"
似乎e.persist()
不起作用。任何想法?: D
持久化需要与事件同步调用,处理程序可以异步调用。下面是一个修复:
class Tool extends React.Component {
constructor(props) {
super(props);
this._throttledMouseMove = _.throttle(this._throttledMouseMove.bind(this), 2000);
}
_throttledMouseMove = (e) => {
console.log(e.screenX);
}
render() {
return (
<div ref="tool" className="tool">
<div ref="toolBody"
className="tool__body"
onMouseMove={this._onMouseMove}>
</div>
</div>
)
}
_onMouseMove = (e) => {
e.persist();
this._throttledMouseMove(e);
}
}
ReactDOM.render(<Tool/>, document.querySelector('.main'))
相关的更改是直接从事件调用_onMouseMove,并设置第二个方法来实际处理已被限制的事件。
带钩子:
const Tool = () => {
const onMouseMove = useMemo(() => {
const throttled = _.throttle(e => console.log(e.screenX), 300);
return e => {
e.persist();
return throttled(e);
};
}, []);
return (
<div className="tool">
<div className="tool__body" onMouseMove={onMouseMove}>
Content
</div>
</div>
);
};
相关文章:
- issue with FB.Event.subscribe
- Angularjs :$routeChangeStart event
- event.prventDefault()持续多久
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- KeyDown event for CKeditor
- Javascript events: window.event vs argument reference (funct
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- <td> focusin event .addclass
- event.preventDefault阻止ajax调用
- google.maps.event.addDomListener(window, 'load', fun
- jQuery event.target is_a_child_of(element)
- event.stopPropagation()在firefox javascript中不起作用
- asp.net text onkeyup event
- 如何从ondragend获取正确的event.pageX
- 面料:“;鼠标:向下”;在event.target中未返回对象
- 使用event.target.classlist区分按钮颜色
- event.keycode vs event.which
- 将字符串作为参数传递给函数onclick event jquery
- iFrame onload JavaScript event
- React.js控制鼠标移动事件保持抛出event.persist()错误