【发布时间】:2016-09-16 12:28:48
【问题描述】:
if 语句中的 setState():
// morePage = true
// pageNum = 1
if(morePage){
this.setState({pageNum: this.state.pageNum+1})
}
console.log(this.state.pageNum); // return: 1
setState() out 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)”函数中我可以访问新的和旧的道具值,在那里我可以使用“pageNum”的先前值和当前值" :)
【问题讨论】:
-
如果您不想为此使用额外的生命周期方法,您应该查看我的答案。
-
是的,你的答案也应该有效,但我的代码更大,而且我还有其他需要放在 componentDidUpdate() 中的东西,所以这是一个更干净的解决方案:)
标签: javascript reactjs react-native