在我的app.js中,我正在安装事件监听器。几次重新加载后,我收到“警告:检测到可能的EventEmitter内存泄漏。添加了11个更改侦听器”。
我的代码是这样的。
let App = React.createClass({
componentWillMount() {
ArticleStore.addChangeListener((e) => this.onArticleChange(e));
},
componentWillUnmount() {
ArticleStore.removeChangeListener(e);
}
}
然而,componentWillUnmount永远不会在app.js中调用,因为它存在于服务器上,最终导致大量事件侦听器打开导致上述错误并最大化我的事件侦听器限制。
如何在app.js中卸载任何事件侦听器?
答案 0 :(得分:1)
componentWillMount
,但componentDidMount
不是。为了防止泄密,您通常希望使用componentDidMount
进行事件注册。
let App = React.createClass({
componentDidMount() {
ArticleStore.addChangeListener((e) => this.onArticleChange(e));
},
componentWillUnmount() {
ArticleStore.removeChangeListener(e);
}
}