ComponentDidMount работает с одного экрана, но не работает с другого - React-Native - PullRequest
0 голосов
/ 05 августа 2020

Я немного читал, и мне кажется, что причина, по которой ComponentDidMount не активируется, заключается в том, что он уже находится в навигаторе стека. Для этого мы должны использовать addListener с didFocus.

Предположим, у меня есть 3 экрана A, B, C. Я не понимаю, почему, когда мое приложение загружается на экран B, componentDidMount работает неявно (мне не нужен didFocus) на экране B из C -> B, но не работает из A-> B

ComponentDidMount() 
{
   //ComponentDidMount Located in Screen B

   execute code1.  //works from C->B, Does not work from A->B

   this.props.navigation.addListener('didFocus'{
      execute code2.    //Works for both
   })
}

Навигатор стека выглядит так

createStackNavigator({
FriendsArea: {
    screen:B,
    navigationOptions:{
      header:null
    }
  },
  HostArea: {
    screen:C,
    navigigationOptions:{
      header:null
    }
  },
  Profile: {
    screen:A,
    navigationOptions:{
      header:null
    }
  },
})

Может кто-нибудь помочь? Я могу уточнить, если нужно, спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Последовательность имеет значение в навигаторе стека, вы должны расположить стек следующим образом:

createStackNavigator({
FriendsArea: {
  screen:A,
    navigationOptions:{
      header:null
    }
  },
  HostArea: {
    screen:B,
    navigigationOptions:{
      header:null
    }
  },
  Profile: {
    screen:C,
    navigationOptions:{
      header:null
    }
  },
})

A = первая страница, B = следующая страница после A, C = следующая страница после B

Проблема возникла из-за того, что компонент B уже вызвал метод componentDidMount при создании компонента A, поэтому вам нужно вызвать прослушиватель didFocus, который обычно используется для выполнения кода, когда мы возвращаемся с другой страницы.

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