簡體   English   中英

如何在單頁分頁時重置滾動位置

[英]How to reset scroll position on single page pagination

我嘗試修復滾動位置。
單擊另一個分頁時,不會重置滾動位置。

前:React
CSS框架:語義UI反應

  Paragraph = () => (
    <p style={{whiteSpace: 'pre-wrap', wordBreak: 'break-all'}}>
      {[this.state.article.content].join('')}
    </p>
  );

  render() {
    return (
      <Container text style={{marginTop: '3em'}}>
        <Header as="h1">{this.state.article.title}</Header>
        <this.Paragraph />
      </Container>
    );
  }
class App extends React.Component {
  render() {
    return (
      <div className="container">
        <FixedMenuLayout />
        <Switch>
          <Route path="/" component={List} />
          <Redirect to="/" />;
        </Switch>
      </div>
    );
  }
}

完整的源代碼在這里:
https://github.com/jpskgc/article/blob/master/client/src/components/List.tsx

我希望在單擊分頁組件中的另一個數字時重置滾動。
但實際並非如此。
請看下面的圖片。
在此處輸入圖片說明

在分頁上單擊“ 2”后,我想重置滾動,如下圖所示。
在此處輸入圖片說明

您可以將window.scrollTo(0, 0)添加到setState回調中:

async btnClick(
    event: React.MouseEvent<HTMLAnchorElement>,
    data: PaginationProps
  ) {
    //...

    this.setState({
      articleDatas: this.state.articles.slice(this.state.begin, this.state.end),
    },
    () => window.scrollTo(0, 0));
  }

還要注意,您的await this.setState將無法正常工作。 setState不返回Promise。 如果您確實想要異步setState ,則可以創建自己的幫助器:

setStateAsync(state) {
    return new Promise((resolve) => {
      this.setState(state, resolve)
    });
}

來源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM