我正在使用Reactjs 16.10.2创建网站。但是我无法设置状态。
首先,我通过函数作为组件的道具:
getStepFour = (data)=>{
this.setState({
tenCaThi:data.tenCaThi,
ngayThi:data.ngayThi,
gioBatDau:data.gioBatDau,
gioKetKetThuc:data.gioKetKetThuc,
phongThi:data.phongThi,
});
console.log('data receipt four: ', data);
console.log('state after set: ', this.state.tenCaThi);
}
<ChiaCaThi getStepFour={this.getStepFour}/>
然后我用它来像这样在ChiaCathi中获取数据:
componentWillUnmount = ()=>{
const data = {
tenCaThi:this.state.tenCaThi,
ngayThi:this.state.ngayThi,
gioBatDau:this.state.gioBatDau,
gioKetKetThuc:this.state.gioKetKetThuc,
phongThi:this.state.phongThi,
}
console.log('data in chiacathi: ', data)
this.props.getStepFour(data);
}
对于某些setState无法正常工作。设置后的状态为null。
答案 0 :(得分:2)
这是因为setState()
是异步的。根据{{3}}的状态,
setState()并不总是立即更新组件。它可能 批量更新或将更新推迟到以后。
此外,
将setState()视为请求而非直接命令 更新组件。为了获得更好的感知性能,React可能会 延迟它,然后在一次通过中更新几个组件。反应 不保证状态更改会立即应用。
如果您想了解更多有关为什么状态不立即更新的信息,请随时阅读React documentation,它在解释状态时非常深入。