Reactjs 侦听控制盘是否已关闭以及装载和卸载事件侦听器
我想为向下和向上滚动的滚轮事件添加一个事件侦听器,根据向上滚动或向下滚动路由到不同的页面,并装载和卸载此事件侦听器Reactjs 侦听控制盘是否已关闭以及装载和卸载事件侦听器,reactjs,Reactjs,我想为向下和向上滚动的滚轮事件添加一个事件侦听器,根据向上滚动或向下滚动路由到不同的页面,并装载和卸载此事件侦听器 pageDown = () => {[redirect to page down]} render() { window.addEventListener('wheel', function(e) { if (e.deltaY > 0) { this.pageDown(); } }); return ([Some Code])} 我
pageDown = () => {[redirect to page down]}
render() {
window.addEventListener('wheel', function(e) {
if (e.deltaY > 0) {
this.pageDown();
}
});
return ([Some Code])}
我正在使用它,虽然我的网站上的重定向最初是好的,但在上下滚动几下之后,重定向会变得混乱和错误。我想这可能是因为没有安装/卸载
我尝试了以下方法,删除了render()中的上一个事件侦听器
但是,当我尝试向下滚动时,react警告我,this.pageDown()不是一个函数,我也不知道为什么。
事件处理程序中的此
引用的是函数本身,而不是组件
经典的解决方案如下所示:
var self = this;
window.addEventListener('wheel', function(e) {
if (e.deltaY > 0) {
self.pageDown();
}
});
但是,更好的解决方案是使用箭头函数:
window.addEventListener('wheel', e => {
if (e.deltaY > 0) {
this.pageDown();
}
});
还要注意,您没有正确删除函数,您应该完全删除您正在添加的相同函数(相同的函数引用):
此
在事件处理程序中引用的是函数本身,而不是组件
经典的解决方案如下所示:
var self = this;
window.addEventListener('wheel', function(e) {
if (e.deltaY > 0) {
self.pageDown();
}
});
但是,更好的解决方案是使用箭头函数:
window.addEventListener('wheel', e => {
if (e.deltaY > 0) {
this.pageDown();
}
});
还要注意,您没有正确删除函数,您应该完全删除您正在添加的相同函数(相同的函数引用):