我正在使用React Native开发移动应用程序,并在我的项目中使用EventEmitter发现了这种奇怪的行为。我正在使用Flux。在我的场景(组件)中,我在下面的代码中听到Event:
组件:
componentWillMount(){
BasketStore.addChangeListener(this._onChange.bind(this));
}
componentWillUnmount(){
BasketStore.removeChangeListener(this._onChange.bind(this));
}
BaseStore:
export default class BaseStore extends EventEmitter {
constructor() {
super();
}
emitChange() {
this.emit(CHANGE_EVENT);
}
addChangeListener(callback) {
this.on(CHANGE_EVENT, callback);
}
removeChangeListener(callback) {
this.removeListener(CHANGE_EVENT, callback);
}
subscribe(actionSubscribe) {
this._dispatchToken = AppDispatcher.register(actionSubscribe());
}
get dispatchToken() {
return this._dispatchToken;
}
}
BaskekStore:
class BasketStore extends BaseStore {...}
在Navigator我navigator.pop()
回到我的路线。从文档中可以看出,每当我弹出时,它应该卸载我的Component,我用它来回到我之前的场景中。但事实并非如此,我的Component仍然会监听导致app运行错误的_onChange
事件,我在视图之间的交换变得越来越慢,最终粉碎,因为视图和监听器太多了
提前致谢!