React-native componentWillMount не вызывает - PullRequest
0 голосов
/ 06 сентября 2018

Я новичок в реакции-родной у меня в стеке два экрана Логин и дом.

Я хочу вернуться к входу с кнопки на дом.

Я пишу этот код

this.props.navigation.navigate('loginScreen')

но на экране входа в систему componentWillMount метод не вызывается. Я хочу сбросить форму, когда пользователь заходит на экран входа из дома.

Может ли кто-нибудь помочь мне здесь?

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

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Идеальное решение - с this.props.navigation.push('Login'), я пробовал с SwitchNavigator, но оно не обеспечивает navigationOptions для заголовка.

0 голосов
/ 06 сентября 2018

Поскольку ваши домашний экран и экраны входа в систему находятся под одним и тем же StackNavigator, при переходе из режима «Домой» обратно в «Вход» состояние остается таким же, как компонент не отключается. Рекомендуемый способ решить эту проблему - использовать SwitchNavigator реагировать-навигации. Прочитайте эту очень полезную часть документации ниже

https://reactnavigation.org/docs/en/auth-flow.html

Возможно, вы еще не знакомы с SwitchNavigator. Цель SwitchNavigator должен показывать только один экран за раз. По умолчанию, он не обрабатывает обратные действия и сбрасывает маршруты к значениям по умолчанию состояние при выключении.

0 голосов
/ 06 сентября 2018

this.props.navigation.navigate('loginScreen') не работает, потому что вы сейчас в loginScreen.

Если вы хотите перезапустить страницу, этот код не подходит. потому что есть цикл!

правильный код:

только когда navigate до loginScreen с home использование:

this.props.navigation.push('loginScreen')

NOT IN "componentWillMount"

0 голосов
/ 06 сентября 2018

Чтобы вернуться из входа в систему из дома, вы должны использовать this.props.navigation.goBack(), если экран находится непосредственно перед home.

Во-вторых, вы не должны использовать componentWillMount, поскольку он устарел и будет удален из Реакция 17 и далее. Вместо этого используйте componentDidMount

Поскольку компонент уже смонтирован, он не будет вызывать события жизненного цикла реакции componentDidMount снова. Поэтому вы должны использовать событие react-navigation listeners didFocus.

didFocus : экран сфокусирован (если был переход, переход завершен)

componentDidMount () {
    this._onFocusListener = this.props.navigation.addListener('didFocus', (payload) => {
      // Perform the reset action here
    });
}
...