Leo*_*eon 3 javascript reactjs react-native
if 语句中的 setState() :
// morePage = true
// pageNum = 1
if(morePage){
this.setState({pageNum: this.state.pageNum+1})
}
console.log(this.state.pageNum); // return: 1
Run Code Online (Sandbox Code Playgroud)
setState() 输出 if 语句:
// morePage = true
// pageNum = 1
if(morePage){
// ...
}
this.setState({pageNum: this.state.pageNum+1})
console.log(this.state.pageNum); // return: 2
Run Code Online (Sandbox Code Playgroud)
我现在就面临这个问题,我想知道为什么......
谢谢 :)
正确答案后编辑:
所以是的,我应该花更多的时间阅读 React 的文档:P 如果有人有兴趣知道我最终是如何做到的,这里是答案:
在文档中,他们说无法保证您的状态在重新渲染之前将具有新的值。所以你必须使用“componentDidUpdate()”。
所以我所做的是,我把:
this.setState({pageNum: this.state.pageNum+1})
Run Code Online (Sandbox Code Playgroud)
在我创建的随机函数内,之后在“componentDidUpdate(prevProps, prevState)”函数中我可以访问新的和旧的 props 值,并且在那里我可以使用“pageNum”的先前值和当前值:)
setState() 不会立即改变 this.state ,而是创建一个挂起的状态转换。调用此方法后访问 this.state 可能会返回现有值。
无法保证 setState 调用的同步操作,并且可以对调用进行批处理以提高性能。
如前所述,不能保证状态值将在下一行代码中更新。
如果您想检查调试状态,请尝试将其记录在render方法中,因为此方法在状态更新后被调用
| 归档时间: |
|
| 查看次数: |
13237 次 |
| 最近记录: |