javascript - setState 不更新 React Js 中的数组状态
问题描述
我尝试从输入中获取值并将其放入对象中,然后推送到新数组。然后将这个数组(带 setState)与我的状态数组结合起来。但是,我的状态数组值总是返回空。能否请您说错误在哪里。谢谢。
class AddExtraSeassion extends Component {
constructor(props) {
super(props);
this.checkValidity = this.checkValidity.bind(this);
this.onChangeDate = this.onChangeDate.bind(this);
this.onChangeTime = this.onChangeTime.bind(this);
this.onChangeDuration = this.onChangeDuration.bind(this);
this.state = {
checkedStudentLength: 0,
validity: false,
seassionDuration: null,
seassionDate: null,
seassionTime: null,
showSeassion: false,
seassions: []
}
}
addSeassion = () => {
this.setState({showSeassion: true});
}
onChangeDate = (event) => {
this.setState({seassionDate: event.target.value});
};
onChangeTime = (event) => {
this.setState({seassionTime: event.target.value});
};
onChangeDuration = (event) => {
this.setState({seassionDuration: event.target.value});
};
checkValidity() {
const seassionDate = this.state.seassionDate;
const seassionTime = this.state.seassionTime;
const seassionDuration = this.state.seassionDuration;
const obj = {
"Date": seassionDate,
"Time": seassionTime,
"Duration": seassionDuration
};
let SeassionList=[];
SeassionList.push(obj);
console.log(JSON.stringify(SeassionList) + " SeassionList array"); // print result
this.setState({
seassions: [...this.state.seassions, SeassionList]
})
console.log(JSON.stringify(this.state.seassions) + " state array"); // always empty
解决方案
正如@norbitrial 提到的 setState 是异步操作,所以 console.log() 不会显示更新后的状态。如果要检查状态是否正在更新,可以使用 setState 方法提供的回调,如下所示:
this.setState(prevState => ({
seassions: [...prevState.seassions, SeassionList[0]]
}),() => {
console.log(this.state.seassions);
})
推荐阅读
- tensorflow - TFLITE无法将tensorflow模型的输入输出量化为INT8
- windows - 有没有办法让 Windows C API 通知光标已更改?
- angular - 使用@HostBinding 或@HostListener 而不是`host`
- allennlp - 微调阅读理解模型
- reactjs - React 表单验证,包括。在任何自定义组件上
- javascript - 如何在 graphql 查询中传递参数
- flutter - 调用 setState 时键盘关闭
- port - 本地应用程序是否有通常未使用的端口范围?
- ios - 我正在尝试使用 Swift Xcode 中的 MapKit 向我的地图添加一个覆盖圆。但是,覆盖没有出现
- parsing - 在 Excel 中解析