首页 > 解决方案 > 无法从子组件更新状态

问题描述

分页组件的状态我移动到父组件。

分页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));
  };

看起来和以前一样,但状态没有更新。

为什么状态不更新?

标签: javascriptreactjs

解决方案


改变:

gotoPage = (page) => {
    ...
    () => updatePaginationPage(currentPage);
};

至:

gotoPage = (page) => {
    ...
    updatePaginationPage(currentPage);
};

推荐阅读