使用对象的实例分配 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));
});
我在使用 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));
});