我遇到了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));
}
我在警告消息中未定义。你能解释一下这种行为吗
非常感谢你的帮助,感激不尽。
答案 0 :(得分:0)
来自官方docs:
setState()不会立即改变this.state但会创建一个 待定状态转换。调用后访问this.state 方法可以返回现有值。
这意味着您无法假设在致电this.state.user
后会立即定义setState
。
但是,您可以使用回调在状态更新时通知您:
this.setState({
user : newUser
}, function() {
alert(JSON.stringify(this.state.user));
});