Reactjs React/React路由器:路由到新页面时未调用componentWillUnmount

Reactjs React/React路由器:路由到新页面时未调用componentWillUnmount,reactjs,react-router,Reactjs,React Router,在我使用React路由器的React应用程序中,我有一个如下的主组件: import React, { Component } from 'react'; import { Link } from 'react-router-dom'; class Home extends Component { componentDidMount() { window.addEventListener("scroll", this.handleScroll, true); } component

在我使用React路由器的React应用程序中,我有一个如下的主组件:

import React, { Component } from 'react';
import { Link } from 'react-router-dom';


class Home extends Component {

 componentDidMount() {
  window.addEventListener("scroll", this.handleScroll, true);
}

componentWillUnmount() {
 window.removeEventListener("scroll", this.handleScroll);
}

handleScroll(e) {
 e.preventDefault();
 // scroll event handling
}

render () {
 return (<div>
            // markup
            <Link to="/secondPage"></Link>
        </div>);
 }
}

export default Home;
import React,{Component}来自'React';
从'react router dom'导入{Link};
类Home扩展组件{
componentDidMount(){
window.addEventListener(“滚动”,此.handleScroll,true);
}
组件将卸载(){
window.removeEventListener(“滚动”,this.handleScroll);
}
handleScroll(东){
e、 预防默认值();
//滚动事件处理
}
渲染(){
返回(
//加价
);
}
}
导出默认主页;
但是,当我单击链接,从“/”导航到“/”secondPage时,它会路由到新页面,但没有从主组件中删除事件侦听器

根据,似乎应该调用componentWillUnmount


为什么不调用componentWillUnmount

也许你需要绑手环?我喜欢用胖箭头表示法。
handleScroll=(e)=>{…}

在添加/删除事件侦听器时,我们必须保持格式相同,以获得预期的结果。在代码中,您使用此选项添加事件侦听器:

window.addEventListener("scroll", this.handleScroll, true);
但是为了删除侦听器,您使用了以下方法:

window.removeEventListener("scroll", this.handleScroll);
我建议您尝试用这个来删除事件侦听器

window.removeEventListener("scroll", this.handleScroll, true);
此外,在大括号后面使用了分号

componentDidMount() {;

你在那里放了控制台日志检查了吗?是的,我检查了,它没有调用componentWillUnmount。嘿,我面临着同样的问题。我已经在下面的链接中发布了这个问题。如果你已经解决了这个问题,我想听听是怎么解决的。不幸的是,不是这样的——this.handleScroll的绑定是正确的。