Навигация между экранами, но конструктор не вызывает - PullRequest
0 голосов
/ 04 января 2019

В моем приложении несколько экранов, для навигации я использовал CreatStackNavigator. Если я захожу на экран во второй раз, конструктор не вызывается.

Предположим, у меня есть четыре экрана A, B, C & D, и в настоящее время я нахожусь в A.

Затем я перехожу к экранам C и D соответственно.

Теперь, если я снова нажму на C, тогда конструктор C не будет вызываться.

Я также использовал ComponentReceivedMount (), но он не работал.

Мой код: -

  constructor(props) {
    super(props);
    ToastAndroid.show('heeeelll', ToastAndroid.LONG);
    this.state = {
        drawerOpen: false,
        op: 1,
        cl: '#ffffff',
        swiper: this.renderSwpier,
        showSwiper: false,
        ftc: '#2c3554',
        stc: '#c8c8c8',
        firstTopcolor: 1,
        secondTopColor: 0,
        showview: true,
    }
}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

React navigation имеет собственный доступный API жизненного цикла навигации, который позволяет определить, когда экран стал активным.

Для получения дополнительной информации проверьте документы: https://reactnavigation.org/docs/en/navigation-lifecycle.html

. С помощью withNavigationFocus HOC предоставляется реквизит isFocused, который позволяет определить, является ли экран видимым.

Пример:

import { withNavigationFocus } from 'react-navigation';

class YourScreen extends React.Component {

  render() {
     ...
  }

  componentDidUpdate(prevProps) {
    if (this.props.isFocused && !prevProps.isFocused) {
      // Screen has now come into focus, perform your tasks here! 
    }
  }

}

export default withNavigationFocus(YourScreen)
0 голосов
/ 04 января 2019

Вызов C во второй раз не вызовет конструктор, потому что C уже смонтирован до того, как вы вызвали его из A, и конструктор вызывается, когда генерируется новый экземпляр класса. Вы можете использовать componentwillmount () и componentdidmount () вместо использования конструктора.

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