Reactjs 我只是尝试检查在渲染调用后componentdidmount的状态和值发生了什么变化,但得到了意外的结果

Reactjs 我只是尝试检查在渲染调用后componentdidmount的状态和值发生了什么变化,但得到了意外的结果,reactjs,Reactjs,预期结果是20,但我得到10 这是因为setState是异步的。当您将state的值指定给res时,它仍然是10 您可以使用setstate的回调将值指定为res this.setState({val:20},()=>res-this.state.val) 或者您可以在render()中使用val而不是resHTML。setState是异步运行的,它将在几毫秒内进行更新。您可以看到,由于异步功能,state变量会在几毫秒后将前10个渲染为20个 像这样使用, render() { retur

预期结果是20,但我得到10


这是因为
setState
是异步的。当您将state的值指定给res时,它仍然是10

您可以使用setstate的回调将值指定为res

this.setState({val:20},()=>res-this.state.val)


或者您可以在render()中使用
val
而不是
res
HTML。setState是异步运行的,它将在几毫秒内进行更新。您可以看到,由于异步功能,state变量会在几毫秒后将前10个渲染为20个

像这样使用,

render() {
  return (<h1>{val}</h1>);
}
render(){
返回({val});
}

不要将代码作为图像发布-将实际代码作为正确格式的文本发布在此处,而不是将setState放在后面一步,为了查看结果,请使用set state的回调,如下所示:this.setState({val:20},()=>{console.log(“'state-->”,this.state.val)})我试过了,但没能。我看了一段视频,视频中的文字格式是正确的,我就是这么做的,但我还是做不到error@marc_s