反应本机DeviceEventEmitter取消订阅事件

San*_*hof 5 javascript events event-handling react-native

我用来DeviceEventEmitter处理最喜欢的方法的事件,该方法在构造函数中订阅:

DeviceEventEmitter.addListener("FavoriteClick", async (e) => 
{
    // do something
})
Run Code Online (Sandbox Code Playgroud)

只要组件卸载(永久),此事件侦听器就会保持活动状态。我需要拨打什么电话才能取消订阅?我尝试将事件存储为变量并调用listener.removeCurrentListener()componentWillUnmount() 有限的)文档 states,如果我理解正确的话,但removeCurrentListener()不是一种方法。

Gré*_*EUT 11

DeviceEventEmitter弃用,您应该使用NativeEventEmitter

例子

import { NativeEventEmitter, NativeModules } from 'react-native';

const { CalendarManager } = NativeModules;

const calendarManagerEmitter = new NativeEventEmitter(CalendarManager);

const subscription = calendarManagerEmitter.addListener(
  'EventReminder',
  (reminder) => console.log(reminder.name)
);

...

// Don't forget to unsubscribe, typically in componentWillUnmount
subscription.remove();
Run Code Online (Sandbox Code Playgroud)