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的Doc:P如果有人有兴趣知道我最终的工作方式,那么答案是:
在文档中,他们说不能保证在重新渲染之前您的州将拥有新的价值。因此,您必须使用“ componentDidUpdate()”。
所以我要做的是:
this.setState({pageNum: this.state.pageNum+1})
在我创建的随机函数中,然后在“ componentDidUpdate(prevProps,prevState)”函数中,我可以访问新的和旧的props值,在那里我可以使用“ pageNum”的先前值和当前值:)
setState()不会立即使this.state发生突变,但会创建一个挂起的状态转换。调用此方法后访问this.state可能会返回现有值。
无法保证对setState的调用的同步操作,并且可能会为提高性能而对调用进行批处理。
如前所述,不能保证状态值将在您的下一行代码中更新。
如果要检查状态以进行调试,请尝试将其登录到render
方法中,因为在状态更新后将调用此方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句