#react-native #firebase-realtime-database
#react-native #firebase-база данных в реальном времени
Вопрос:
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:
Я не уверен, что это одно и то же, но я использовал react-navigation-is-focused-hoc
и добавил прослушиватель на страницу, которую я хотел, для запуска componentWillMount и обнаружения изменений. Посмотрите, я использовал именно так, как указано в руководстве по этому в github.