gpt4 book ai didi

javascript - if 语句中的 setState() 问题

转载 作者:行者123 更新时间:2023-11-30 09:44:24 25 4
gpt4 key购买 nike

if 语句中的 setState():

// morePage = true
// pageNum = 1

if(morePage){
this.setState({pageNum: this.state.pageNum+1})
}

console.log(this.state.pageNum); // return: 1

setState() 输出 if 语句:

// morePage = true
// pageNum = 1

if(morePage){
// ...
}
this.setState({pageNum: this.state.pageNum+1})

console.log(this.state.pageNum); // return: 2

我现在正面临这种情况,我想知道为什么...

谢谢:)

正确答案后编辑:

所以是的,我应该花更多时间阅读 React 的文档 :P如果有人有兴趣知道我最终是怎么做的,这里是答案:

在文档中,他们说无法保证您的状态在重新呈现之前将具有新值。所以你必须使用“componentDidUpdate()”。

所以我所做的是,我把:

this.setState({pageNum: this.state.pageNum+1})

在我创建的一个随机函数中,之后在“componentDidUpdate(prevProps, prevState)”函数中我可以访问新的和旧的 Prop 值,在那里我可以使用“pageNum”的先前和当前值“:)

最佳答案

setState() does not immediately mutate this.state but creates a pending state transition. Accessing this.state after calling this method can potentially return the existing value.
There is no guarantee of synchronous operation of calls to setState and calls may be batched for performance gains.

如前所述,不能保证状态值会在您的下一行代码中更新。

如果你想检查状态以进行调试,请尝试在 render 方法中记录它,因为在状态更新后调用此方法

关于javascript - if 语句中的 setState() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39531547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com