Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 侦听控制盘是否已关闭以及装载和卸载事件侦听器_Reactjs - Fatal编程技术网

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();
  }
});
还要注意,您没有正确删除函数,您应该完全删除您正在添加的相同函数(相同的函数引用):