reactjs - 更改状态后,React 组件不会重新渲染
问题描述
我有 2 个组件:PhotoList 和 Pagination。在 PhotoList 内部,我使用componentDidMount
基于currentPage
PhotoList 状态中存储的值从服务器调用 api。
我还编写pageChanged
了更改currentPage
值的方法并将此方法传递props
给分页组件
pageChanged = (numPage) => {
this.setState({
currentPage: numPage
});
// console.log("Day la currentPage hien tai: ",this.state.currentPage);
}
<Pagination
totalPages={Math.floor(this.state.totalImages/30)+1}
clicked={this.pageChanged}
/>
在分页组件内部,我像这样调用了上面的方法
<a onClick={(event) => {this.props.clicked(event.target.text)}}>2</a>
所以我只是更新了currentPage
值,但我的 PhotoList 组件没有重新渲染。另一件事是当我第一次单击它时,该currentPage
值不会改变(仍然是 1默认值),直到我第二次单击它。
请帮助我。谢谢
解决方案
componentDidMount()
仅在第一次渲染组件时调用一次。pageChanged
您应该在调用 时或调用之后调用api setState
。
此外,setState
它是异步的,因此当您第一次单击时,它不会记录更新的值。例如,你可以这样做
pageChanged = (numPage) => {
this.setState({
currentPage: numPage
}, () => {
// console.log("Day la currentPage hien tai: ",this.state.currentPage);
/* YOUR API CALL */
});
}
推荐阅读
- google-cloud-platform - Webhook 调用失败:DialogFlow v2 Fulfillments 中的 URL_REJECTED 错误
- bash - 在一个函数的一行中组合多个输出
- r - 基于比较行中的日期以及列的标题计算列中的多个变量
- javascript - 模态不会在本机反应中显示图像
- json - 用于验证具有不同可能字段值的列表的 JSON 模式
- mongodb - js 日期到 Bson 时间戳
- jquery - 使用 ajax 显示隐藏元素加载的问题
- javascript - 如何访问机器的日期格式而不是浏览器的?
- axapta - 找不到输入值时如何覆盖对 DirPartyTable 查找的验证
- java - Timepicker android间隔