React Native侦听事件的场景

时间:2016-02-24 11:20:59

标签: ios react-native flux reactjs-flux eventemitter

我正在使用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 {...}

Navigatornavigator.pop()回到我的路线。从文档中可以看出,每当我弹出时,它应该卸载我的Component,我用它来回到我之前的场景中。但事实并非如此,我的Component仍然会监听导致app运行错误的_onChange事件,我在视图之间的交换变得越来越慢,最终粉碎,因为视图和监听器太多了

提前致谢!

0 个答案:

没有答案