如何删除 firebase.notifications().onNotificationOpened 监听器?
Posted
技术标签:
【中文标题】如何删除 firebase.notifications().onNotificationOpened 监听器?【英文标题】:how to remove firebase.notifications().onNotificationOpened listener? 【发布时间】:2019-02-05 00:55:15 【问题描述】:我正在开发一个 react native 项目并使用 react-native-firebase 库。设置监听器正在工作,但我无法找到删除监听器的方法。
我在主页上设置了这个监听器,所以每当用户访问主页时。侦听器被多次注册,结果被多次操作。
我想销毁这个监听器,然后重新开始一个新的。
firebase.notifications().onNotificationOpened((notificationOpen) =>
if (notificationOpen)
const notification: Notification = notificationOpen.notification;
if(notification.data.type)
);
如果有人可以提供帮助,将不胜感激......
【问题讨论】:
【参考方案1】:您需要再次调用侦听器以将其删除,如docs 中所述。
componentDidMount()
this.notificationOpenedListener = firebase.notifications().onNotificationOpened((notificationOpen) =>
//... Your Stuff
componentWillUnmount()
this.notificationOpenedListener();
【讨论】:
我不想在卸载时删除它,但我想在注销时删除它。当用户注销时,它会破坏......我们有什么办法吗? this.notificationOpenedListener =firebase.notifications().onNotificationOpened((notificationOpen) => if (notificationOpen) const notification: Notification = notificationOpen.notification; if(notification.data.type) firebase.notifications().removeAllDeliveredNotifications() ); console.log('notificationOpenedListener', this.notificationOpenedListener());
this.notificationOpenedListener() ->> 这是未定义的
这是因为console在函数初始化之前执行得更快
我也试过了,但还是不行。由于所有其他操作也被多次调用,因此它已多次注册。以上是关于如何删除 firebase.notifications().onNotificationOpened 监听器?的主要内容,如果未能解决你的问题,请参考以下文章