дочерний элемент, добавленный в StackNavigator, не запускает установку компонента

#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.