this.props не обновляется после вызова componentWillReceiveProps - PullRequest
0 голосов
/ 06 октября 2018

Моя проблема с обработкой обновления реквизита на одном из собственных экранов реакции заключается в том, что componentWillReceiveProps вызывается дважды.Чтобы справиться с этим, я сравниваю идентификаторы состояния привязанного объекта-избыточности следующим образом:

componentWillReceiveProps(nextProps) {
  console.log("next id:" + nextProps.stateId + " this id: " + this.props.stateId);
  if (nextProps.stateId == this.props.stateId || nextProps.loading || nextProps.facebookLoginErr) {
    return;
  }
  if(nextProps.data)
  {
    var nextScreen = (nextProps.data.must_update) ? 'RegisterScreen' : 'ProductListScreen';
    this.props.navigation.navigate(nextScreen);
  } }

Когда происходит изменение состояния объекта-избыточности, и метод запускается в первый раз, nextProps.stateId равен 1,и this.props.stateId равно 0, однако, когда метод запускается во второй раз, значения в точности совпадают.Я ожидал, что this.props следует обновлять до nextProps каждый раз после запуска метода, но, похоже, этого не происходит.Какова возможная причина этого?Когда и как происходит обновление this.props?

2018-10-06 18:30:59.240 [info][tid:com.facebook.react.JavaScript] next id:0 this id: 1
2018-10-06 18:30:59.247 [info][tid:com.facebook.react.JavaScript] next id:0 this id: 1

Мое сопоставление состояния и реквизитов для компонента выглядит следующим образом:

const mapDispatchToProps = { getFacebookToken };

const mapStateToProps = state => ({
  data: state.facebookLogin.data,
  loading: state.facebookLogin.loading,
  facebookLoginErr: state.facebookLogin.error,
  stateId: state.facebookLogin.stateId
});

export default connect(mapStateToProps, mapDispatchToProps)(WelcomeScreen);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...