发出使用Object的实例分配setState的问题

时间:2016-10-21 18:01:35

标签: react-native react-native-android

我遇到了React-Native的问题,我一直在研究这个问题几个小时没有结果。感谢您的帮助。

我通过React-Native

中的导航器Component将用户对象的实例传递给子组件

所以,我已经按如下方式定义了我的构造函数:

  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对象的新实例并填写其详细信息并想要如下所示的setState时,信息未加载到状态

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

 }

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

非常感谢你的帮助,感激不尽。

1 个答案:

答案 0 :(得分:0)

来自官方docs

  

setState()不会立即改变this.state但会创建一个   待定状态转换。调用后访问this.state   方法可以返回现有值。

这意味着您无法假设在致电this.state.user后会立即定义setState

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

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