отреагировать родным DeviceEventEmitter отписаться от события - PullRequest
2 голосов
/ 08 октября 2019

Я использую DeviceEventEmitter для обработки событий избранного метода, на который подписан конструктор:

DeviceEventEmitter.addListener("FavoriteClick", async (e) => 
{
    // do something
})

Этот прослушиватель событий остается активным всякий раз, когда компоненты отключаются (постоянно). Что мне нужно позвонить в Субъект? Я пытался сохранить событие как переменную и вызывать listener.removeCurrentListener() в componentWillUnmount() , как (ограниченная) документация заявляет , если я правильно понимаю, но removeCurrentListener() - это не метод.

1 Ответ

1 голос
/ 08 октября 2019

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();
...