Reactjs this.setState()之后的setState回调函数上的this.state
更新状态后,我正在尝试访问this.setState中的this.state。 我希望将用户信息设置为状态,然后从真相来源将用户数据保存到本地存储中Reactjs this.setState()之后的setState回调函数上的this.state,reactjs,Reactjs,更新状态后,我正在尝试访问this.setState中的this.state。 我希望将用户信息设置为状态,然后从真相来源将用户数据保存到本地存储中 setUserInfo = userInfo => { this.setState( { username: userInfo.userName, password: userInfo.userPass }, prevState => { //trying to access this.state but
setUserInfo = userInfo => {
this.setState(
{ username: userInfo.userName, password: userInfo.userPass },
prevState => {
//trying to access this.state but unable to
console.log(prevState);
// or
console.log(this.state.username);
}
);
};
我知道这个代码可以做到,但是第二个setstate会在第一个setstate之后运行吗
setUserInfo = userInfo => {
this.setState({ username: userInfo.userName, password: userInfo.userPass });
this.setState(prevState => {
prevState;
});
};
此
函数中的setState()
引用了setState
的方法,因此区分这两种此
。设置var that=this
以便可以像that.state.username那样使用它
var=this;
这是我的国家(
{用户名:userInfo.username,密码:userInfo.userPass},
prevState=>{
//尝试访问this.state.username,但无法
log(prevState.username,that.state.username);
}
);
您绑定函数了吗
在构造函数()中绑定函数
this.handleClick=this.handleClick.bind(this)
实际上,这应该是可行的你可以在调用函数中使用userInfo.userName而不是this.state.userName这不是违背了单一真相来源的目的吗?“无法”是什么意思?请提供可以复制问题的。在回调中,prevState
应该是更新状态。第二个设置状态是否确认在第一个设置状态之后运行它会,但不需要第二个setState。不,它不应该工作,setUserInfo
显然是一个箭头,并且已经绑定到类上下文。此代码与问题中发布的代码不一致setUserInfo
已经是一个箭头了。你是什么意思<代码>控制台.log(this.state.username)
这应该在setState回调中工作,它返回什么?我的意思是,setUserInfo
已经是arrow函数了,用bind
绑定它并不能比原始代码提供任何改进。是的,你是对的,不需要绑定,这是我的错误。但是console.log(this.state.username)代码>应该在那里工作它返回什么?
handleClick() {
this.setState({ status: 2 }, () => {
console.log(this.state);
});
}