Давайте предположим следующий простой сценарий:
У нас есть два экрана: A и B . Мы перемещаемся с экрана A на экран B . React Navigation генерирует событие willFocus для B
class B extends React.Component (
componentDidMount(){
fetchServerData() // fetches some data
}
render(){
<View>
<NavigationEvents
onWillFocus={someFunc}
/>
</View>
);
}
Я заметил, что someFun c будет работать в любом случае, однако это меня удивляет, когда событие willFocus испускается из React Navigation? Я ожидаю, что в первый раз someFun c не будет запущен, поскольку событие генерируется в тот момент, когда мы указываем экрану A перейти к экрану B и поэтому слушатель для B еще не установлен.
Это также послужило бы моему (и я представляю многим другим) сценарию использования, как и в текущей реализации, fetchServerData будет беги дважды. Это заставляет меня добавить задержку при рендеринге NavigationEvents, в противном случае я получаю данные, которые выбираются дважды.
Есть ли какие-либо идеи по этому поводу?
РЕДАКТИРОВАТЬ: Что я делал так далеко рендерится NavigationEvents после того, как loading состояние prop установлено в false, к тому времени уже достаточно поздно, чтобы настроить слушатель willFocus , но мне жаль, что документы не описывают, когда генерируется событие willFocus