我在使用 React JS 中的状态时遇到分页问题

Posted

技术标签:

【中文标题】我在使用 React JS 中的状态时遇到分页问题【英文标题】:I am facing a problem in Pagination using states in React JS 【发布时间】:2022-01-03 17:57:50 【问题描述】:

我正在使用 useEffect() 来呈现文章 API,并且在一页上仅显示 26 篇文章中的 20 篇。我正在尝试将分页概念应用于它,但它没有给我任何错误并且它也不起作用。 nextPageHandler() 负责在下一页显示剩余的 6 篇文章。

let articles = [];

const [article, setArticle] = useState(articles);
const [page, setPage] = useState(1);




useEffect(async () => 
    let url =
      `https://newsapi.org/v2/top-headlines?q=house&from=2021-10-25&sortBy=publishedAt&apiKey=abc&page=$page`;
    let data = await fetch(url);
    let parsedData = await data.json();
    setArticle(parsedData.articles);
  , []);



  const nextPageHandler = async () => 
    let url = `https://newsapi.org/v2/top-headlines?q=house&from=2021-10-25&sortBy=publishedAt&apiKey=abc&page=$setPage(page+1)`;
    let data = await fetch(url);
    let parsedData = await data.json();
    setArticle(parsedData.articles);
    setPage(page + 1);
    console.log("next");
  ;

  const prevPageHandler = async () => 
    let url = `https://newsapi.org/v2/top-headlines?q=house&from=2021-10-25&sortBy=publishedAt&apiKey=abc&page=$setPage(
      page - 1
    )`;
    let data = await fetch(url);
    let parsedData = await data.json();
    setArticle(parsedData.articles);
    setPage(page - 1);
    console.log("previous");
  ;

请纠正我的错误。谢谢你

【问题讨论】:

【参考方案1】:

您需要在 useEffect 依赖数组中添加页面状态。触发api调用

useEffect(async () => 
    let url =
      `https://newsapi.org/v2/top-headlines?q=house&from=2021-10-25&sortBy=publishedAt&apiKey=abc&page=$page`;
    let data = await fetch(url);
    let parsedData = await data.json();
    setArticle(parsedData.articles);
  , [page]);

你也不需要再次从函数调用 api

const nextPageHandler =  () => 

    setPage(page + 1);
    console.log("next");
  ;

  const prevPageHandler =  () => 
    setPage(page - 1);
    console.log("previous");
  ;

【讨论】:

试过了。有用!谢谢 如果它有助于将其标记为已回答并竖起大拇指将不胜感激

以上是关于我在使用 React JS 中的状态时遇到分页问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 React Router v4.1 的分页问题

在 Next.js 中,如何使用来自 getServerSideProps 的数据更新 React Context 状态?

React 呈现未定义和更新的状态

当 React JS 中的一项值使用地图函数中的状态发生变化时,如何动态更新购物车中的值?

在 React.js 中设置和重置状态

React JS:setState中的previousState在状态更新后不保留先前状态的数据