Как использовать componentDidMount на повторном экране - PullRequest
0 голосов
/ 27 ноября 2018

у меня 2 экрана.

Screen 1 -> select city -> store in AsyncStorage -> navigate to Screen 2 

В компоненте DiskMount экрана 2 я выполняю вызов на сервер в зависимости от выбранного города. проблема componentDidMount срабатывает только один раз, когда я снова посещаю этот экран, он не перейдет в componentDidMountЯ искал и узнал, что Screen 2 присутствует в стеке, поэтому componentDidMount не будет запускаться снова.Поэтому я пытаюсь this.props.navigation.dispatch(StackActions.popToTop()); и все такое, чтобы сбросить стек, но это не сработало.Я не загружаю код, так как думаю, что объяснений достаточно.При необходимости спросите

1 Ответ

0 голосов
/ 27 ноября 2018

Что ж, вы можете подумать о том, чтобы полагаться на события навигации, предоставляемые React Navigation (при условии, что вы используете это).

Так что при повторном посещении экрана 2 вы можете сделать серверный вызов включенным didFocus событие жизненного цикла навигации на экране 2.

//in ComponentDidMount you should set a listener to the navigation events
const didBlurSubscription = this.props.navigation.addListener(
  'didFocus',
   payload => {
     // Do your API Call here.
   }
);

// Remove the listener when you are done in componentWillUnMount.
didBlurSubscription.remove();

Однако у меня есть здесь сомнения, вернувшись к тому, что именно вы имеете в виду?Собираетесь ли вы на какой-нибудь другой экран, скажем, Screen 3, и возвращаетесь, используя goBack?Если это сценарий, который я подозреваю, когда вы говорите, что Screen2 находится в стеке, то приведенное выше решение может вам помочь.

Надеюсь, это поможет.Удачного кодирования:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...