使用对象的实例分配 setState

Issue assigning setState with instance of an Object

我在使用 React-Native 时遇到问题,我已经为此工作了几个小时但没有结果。感谢您的帮助。

我正在通过 React-Native 中的导航器组件将用户对象的实例传递给子组件

所以,我定义了我的构造函数如下:

  constructor (props) {
   super(props);
   this.state = {
     isSpinnerLoading: true,
     user : React.PropTypes.instanceOf(User).isRequired
   };
 }

我用相应的信息填写我的用户对象,然后调用 this.props.navigator。到这里为止一切正常。

        this.props.navigator.replace({
           id: 'RegisterPage',
           passProps: {user: this.state.user}
        });

当我移动到 componentWillMount() 方法中的 RegisterPage 组件时,我发送了一个警报来检查信息,到目前为止一切看起来都很好。

但是当我创建 User 对象的新实例并填写其详细信息并想要设置状态时,如下所示,信息未加载到状态中

componentWillMount() {
  alert(JSON.stringify(this.props.user));

  let newUser = new User(this.props.user.getId,
  this.props.user.getFirstName,
  this.props.user.getLastName,
  this.props.user.getFullName,
  this.props.user.getProfilePicture,
  this.props.user.getEmail,
  this.props.user.getAlternativeEmail,
  this.props.user.getPassword,
  this.props.user.getRole,
  this.props.user.getAccessToken);

  this.setState({
     user : newUser
  });
  alert(JSON.stringify(this.state.user));

 }

我在警报消息中未定义。你能解释一下这种行为吗

非常感谢您的帮助,非常感谢。

来自官方docs

setState() does not immediately mutate this.state but creates a pending state transition. Accessing this.state after calling this method can potentially return the existing value.

这意味着您不能假设 this.state.user 会在调用 setState 后立即定义。

但是您可以使用回调在状态更新时通知您:

this.setState({
   user : newUser
}, function() {
   alert(JSON.stringify(this.state.user));
});