2016-04-27 18 views

risposta

17

ho trovato la risposta me stesso.

https://github.com/facebook/react-native/blob/235b16d93287061a09c4624e612b5dc4f960ce47/Libraries/vendor/emitter/EventEmitter.js

addListener restituisce un'istanza EmitterSubscription che si estende EventSubscription che ha remove metodo.

https://github.com/facebook/react-native/blob/235b16d93287061a09c4624e612b5dc4f960ce47/Libraries/vendor/emitter/EventSubscription.js

const emitter = new EventEmitter(); 

const subscription = emitter.addListener('eventname',() => {}); 

subscription.remove(); // Removes the subscription 
1

In realtà lo fa (a meno che non fraintenda la tua domanda).

Ecco come lo faccio:

class Store extends EventEmitter { 
    constructor(listenerKey) { 
     super() 
     this.listenerKey = listenerKey 
    } 

    emitChange() { 
     setTimeout(() => { 
      this.emit(this.listenerKey) 
     }, 0) 
    } 

    addChangeListener(callback) { 
     this.on(this.listenerKey, callback) 
    } 

    removeChangeListener(callback) { 
     this.removeListener(this.listenerKey, callback) 
    } 
}