Reactjs 在React中将事件侦听器添加到窗口的正确方法是什么?
我想在React组件的浏览器窗口中添加一个调整大小事件侦听器。我是这样做的:Reactjs 在React中将事件侦听器添加到窗口的正确方法是什么?,reactjs,Reactjs,我想在React组件的浏览器窗口中添加一个调整大小事件侦听器。我是这样做的: componentDidMount(){ window.addEventListener(“调整大小”,()=>this.handleIndowResized()) } 就React中的好的和坏的实践而言,这是一种正确的方法,还是有更好的方法?当组件卸载时,您的方法将导致一个悬空的处理程序,因为您正在创建一个匿名函数,而在卸载React组件时,您没有可用于取消注册事件侦听器的句柄 不幸的是,在JavaScript中,
componentDidMount(){
window.addEventListener(“调整大小”,()=>this.handleIndowResized())
}
就React中的好的和坏的实践而言,这是一种正确的方法,还是有更好的方法?当组件卸载时,您的方法将导致一个悬空的处理程序,因为您正在创建一个匿名函数,而在卸载React组件时,您没有可用于取消注册事件侦听器的句柄 不幸的是,在JavaScript中,实例方法不会自动绑定到实例,因此您无法直接传递对实例方法的引用,除非它已显式绑定到实例。您可以在类构造函数中执行此操作,然后在注册和取消注册事件侦听器期间直接使用对实例方法的引用 使用这种方法,事件侦听器仅在React组件的生命周期内处于“活动”状态 像这样:
class Something extends React.Component {
constructor() {
super()
this.handleWindowResized = this.handleWindowResized.bind(this)
}
handleWindowResized() {
console.log("window resized")
}
componentDidMount() {
window.addEventListener("resize", this.handleWindowResized)
}
componentWillUnmount() {
window.removeEventListener("resize", this.handleWindowResized)
}
}