在stackNavigator上的child_add不要触发componentWillUnmount

时间:2019-03-23 16:48:05

标签: react-native firebase-realtime-database

StackNavigator不会触发componentWillUnmount事件,因此两个侦听器保持打开状态。

有什么方法可以捕获“ OnTabChange”事件以停止侦听器?

如果用户从一个选项卡快速切换到另一个选项卡,这是最佳选择吗?

我还考虑过在App.js文件中创建一个侦听器,以便它发出一条消息(带有快照)并通过侦听器侦听的屏幕捕获此事件。

我认为我可以像这样在App.js中做一个监听器

firebase.authFirebaseListener = auth.onAuthStateChanged((user) => {
  if (user) {
    db.ref('users')
    .child(auth.currentUser.uid)
    .child('favorites')
    .on('child_added', snapshotFavorites => {
       ## Send a signal with snapshotFavorites
       ## to refresh data if current screen need it.
    })
    ....
  } 
}

componentWillUnmount() {
    db.ref('users').child(auth.currentUser.uid).child('favorites').off()
    db.ref('users').child(auth.currentUser.uid).off()
    db.ref('users').off()
  }

1 个答案:

答案 0 :(得分:0)

我不确定是否是同一回事,但是我使用了react-navigation-is-focused-hoc并在要触发ComponentWillMount并检测更改的页面上添加了一个侦听器。 看一看,我使用了它的教程在github中所说的确切方式。