首页 > 解决方案 > 反应本机 DeviceEventEmitter 取消订阅事件

问题描述

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

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

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

标签: javascriptreact-nativeeventsevent-handling

解决方案


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

推荐阅读