如何从 React Native 的 EventEmitter 实例中删除侦听器?



removeCurrentListener,但没有removeListener方法。

我自己找到了答案。

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

addListener返回一个EmitterSubscription实例,该实例扩展了具有remove方法EventSubscription

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

实际上确实如此(除非我误解了你的问题)。

这是我的做法:

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)
    }
}

相关内容

  • 没有找到相关文章

最新更新