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()
}
答案 0 :(得分:0)
我不确定是否是同一回事,但是我使用了react-navigation-is-focused-hoc
并在要触发ComponentWillMount并检测更改的页面上添加了一个侦听器。
看一看,我使用了它的教程在github中所说的确切方式。