在componentWillReceiveProps被调用

时间:2018-10-06 15:54:54

标签: javascript react-native redux

在react-native屏幕之一中处理道具更新的问题是,componentWillReceiveProps被调用了两次。为了解决这个问题,我正在按如下方式比较绑定的redux对象的状态ID

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);
  } }

当redux对象的状态发生变化并且第一次运行该方法时,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);

0 个答案:

没有答案