reactjs - setState 回调上的这个值。一个小小的困惑
问题描述
问题: setState(?) 的回调中 this 的值是什么?
考虑一下:
handleChange = (event) => {
const { name, value } = event.target;
const {content, errors} = this.state;
this.setState({
content: {
...content,
[name]: value
},
一个简单的状态更新......但之后我调用回调,并尝试访问我的 var内容或错误,这些值是什么?
this.setState({
content: {
...content,
[name]: value
},
errors: {
...errors,
[name]: validations[name] && validations[name](value)
}
}, () => {
// commenting this line, I get the content out of date.
// const {content, errors} = this.state;
! this.hasErrors() //if doesn't have errors.
? this.props.fn({...content, students : [content.studentA, content.studentB]})
: this.props.fn({...content, hasError: true, errors}) //should be emptyField(?)
})
内容或错误值有点旧,所以我需要“更新”它来老化 this.state 中的值。
const {content, errors} = this.state;
如果没有前一行,当我尝试访问内容或错误时,我会从前一个状态获取值。我需要重新声明内容和错误,以获得更新的状态。
有人可以解释一下发生了什么吗?
解决方案
我认为您不需要再次传播旅行错误或内容,您可以解释一下,您实际上想要做什么?
推荐阅读
- css - 如何旋转身体的两个背景图像
- javascript - NodeJS 类中的私有常量
- package - LaTeX \usepackage{forest} 不工作,显然是由于 .sty 文件?
- android - 在 Android 中每 10 分钟运行一次此脚本的最佳方式是什么?
- reactjs - TS2345:“Params”类型的参数不可分配给“CommonResult”类型的参数
- html - 离子网格显示额外的列空间
- c++ - 修复使用多维向量创建的地图不会崩溃
- git - 为什么我不能 rebase GitHub Desktop?
- java - 反应堆核心,取30然后等待再取30
- java - 如果使用 vertx 的 WebApiServiceGen,我如何设置/获取会话?