react native DeviceEventEmitter unsubscribe from event
11,191
DeviceEventEmitter
is deprecated, you should use NativeEventEmitter
instead.
Example :
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();
Author by
Sander Koldenhof
Updated on June 04, 2022Comments
-
Sander Koldenhof almost 2 years
I'm using
DeviceEventEmitter
to handle events of a favorite method, to which is subscribed in the constructor:DeviceEventEmitter.addListener("FavoriteClick", async (e) => { // do something })
This event listener stays active whenever the components unmounts (permenantly). What do I have to call to unsub? I've tried storing the event as a variable and calling
listener.removeCurrentListener()
in thecomponentWillUnmount()
like the (limited) documentation states, if I understand that correctly, butremoveCurrentListener()
is not a method.-
sansa almost 3 yearsaddListener returns an EmitterSubscription, which has the inherent method ".remove()". Therefore, your code should look like this: const favoriteClickSub = DeviceEventEmitter.addListener("FavoriteClick", (e) => {}); favoriteClickSub.remove();
-