ReactJS移除ES6中的绑定事件处理程序
ReactJS remove bound event handlers in ES6
我试图取消绑定ES6 react组件中的事件侦听器。我不确定这是不是最好的方法。
export default class ProductDetail extends React.Component {
...
componentDidMount() {
this.boundKeyListener = this.keyListener.bind(this);
document.addEventListener('keydown', this.boundKeyListener);
}
componentWillUnmount(){
document.removeEventListener('keydown', this.boundKeyListener);
}
...
}
在this.keylistener
的内部,我需要做一个this.setState({foo:'bar'})
,我发现在类的范围内运行侦听器的唯一方法是使用fn.bind()
。
我的问题是,我真的需要保存boundListener属性吗?或者
document.removeEventListener('keydown', this.keyListener.bind(this));
是足够的吗?
或
document.removeEventListener('keydown', this.keyListener.bind(this));
是足够的吗?
不会的。.bind
返回新的函数,因此您将尝试删除与添加的处理程序不同的处理程序。
function foo() {}
console.log(foo.bind(null) === foo.bind(null));
相关文章:
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 单击事件执行单击和悬停事件处理程序,即使单击事件处理程序取消绑定所有处理程序也是如此
- 如何在页面加载时在 ajax 调用中绑定事件处理程序后触发事件
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- 循环中的闭包:在循环中声明的变量在绑定事件侦听器时未正确预设到处理程序函数中
- 在使用fixture的Jasmine测试中绑定事件处理程序的最佳实践
- 动态绑定事件处理程序的最有效方法
- 在循环中绑定事件处理程序所需的闭包
- Javascript绑定事件处理程序的另一个函数激活/结束
- ReactJS移除ES6中的绑定事件处理程序
- 为服务器端呈现的React模板绑定事件处理程序
- 在for循环中绑定事件处理程序
- 在jQuery中绑定事件后,如何获得对事件处理函数的引用?
- jQuery事件绑定和处理
- 如何在Telerik MVC ClientTemplates中绑定事件处理程序
- 从 jQuery 处理程序取消绑定事件
- mailto:URL 在 jQuery 绑定事件处理程序中不起作用
- jQuery .on()没有绑定事件处理程序
- PureRenderMixin与绑定事件处理程序断开