javascript - 无法从子组件更新状态
问题描述
分页组件的状态我移动到父组件。
分页currentPage
状态的页面更改应该更新,但现在不是。
当currentPage
- state 是本地的时,它是这样工作的:
class Pagination extends React.Component {
state = {
currentPage: 1,
};
componentDidMount() {
this.gotoPage(1);
}
gotoPage = (page) => {
const { onPageChanged = (f) => f } = this.props;
const { totalPages, totalRecords } = this.state;
const currentPage = Math.max(0, Math.min(page, totalPages));
const paginationData = {
currentPage,
totalPages,
totalRecords
};
this.setState({ currentPage }, () => onPageChanged(paginationData));
};
在这种情况下,状态已更新。
现在我传递updatePaginationPage
函数来更新状态:
gotoPage = (page) => {
const { updatePaginationPage } = this.props;
const { totalPages } = this.state;
const currentPage = Math.max(0, Math.min(page, totalPages));
() => updatePaginationPage(currentPage);
};
这是外观updatePaginationPage
功能:
updatePaginationPage = (currentPage) => {
this.setState({ currentPage }, () => this.onPageChanged(currentPage));
};
看起来和以前一样,但状态没有更新。
为什么状态不更新?
解决方案
改变:
gotoPage = (page) => {
...
() => updatePaginationPage(currentPage);
};
至:
gotoPage = (page) => {
...
updatePaginationPage(currentPage);
};
推荐阅读
- visual-studio-code - 如何在调试时在 Visual Studio Code 中输入输入并为我的程序输入整数参数?
- asp.net-core - 打包的 .net-core 电子应用程序无法运行
- html - 什么命令只检查 html 文件中是否存在 xpath 但不打印任何内容?
- http - Flutter consolidateHttpClientResponseBytes not defined 错误?
- image - 从我的 api 在我的 xamarin 应用程序中加载图像
- javascript - 按钮按下ajax请求overclick javascript
- javascript - JavaScript isocontouring 算法性能研究
- python - 如何将数字连续添加到子列表中的连接坐标对?
- java - 当我在其他应用程序上时如何更新我的活动位置
- python - 是否可以将破折号数据表导出到磁盘上的特定位置或直接导出到 SQL Server?