[React-Native-Firebase]如何移除 onMessage 存在事件?

Mas*_*LuV 2 react-native react-native-firebase

我声明了一个 onMessage 函数来做某事。但是当我导航到另一个屏幕并想要删除 ComponentWillUnmount() 中的 FCM.onMessage() 时。我怎样才能删除它?

const rnfirebase = RNFirebase.initializeApp()

export const FCM = rnfirebase.messaging()

ComponentDidMount(){
    FCM.onMessage((notif)=>{

        //Do something

    })

}
ComponentWillUnmount(){
    //I want to remove here

}
Run Code Online (Sandbox Code Playgroud)

小智 6

如果您检查文档onMessage 返回一个函数,如果控制台记录该函数,您将看到类似这样的内容

ƒ () {
    return rnListener.remove();
  }
Run Code Online (Sandbox Code Playgroud)

因此,当您调用 onMessage 返回的函数时,它将停止侦听,在您的情况下,代码将如下所示

const rnfirebase = RNFirebase.initializeApp()

export const FCM = rnfirebase.messaging()

componentDidMount(){
    this.notificationListener = FCM.onMessage(notif=>{
        //Do something
    })
}

componentWillUnmount(){
    this.notificationListener(); //This will remove the listener
}
Run Code Online (Sandbox Code Playgroud)