react.js中如何实现对表中列表数据的分页?

Posted

技术标签:

【中文标题】react.js中如何实现对表中列表数据的分页?【英文标题】:How to implement pagination to a list data in a table in react.js? 【发布时间】:2022-01-21 20:51:44 【问题描述】:

需要快速帮助!我有来自 API 的表格中呈现的数据列表。我需要将此数据列表分页为小数据列表。

这是 VendorsDetail.js 的代码,它在表格中显示数据列表

import React,  useState, useEffect  from "react";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import axios from "axios";
import VendorDetailsBrief from "./VendorDetailsBrief";
import Pagination from "./Pagination";

const VendersDetail = ( textMe ) => 
  const [data, setData] = useState();
  const foo = "cpe:2.3:a:oracle:peoplesoft_enterprise:8.22.14";
  const baseURL =
    "https://services.nvd.nist.gov/rest/json/cves/1.0?cpeMatchString=" + foo;

  useEffect(() => 
    axios
      .get(baseURL)
      .then((response) => 
        setData(response.data);
      )
      .then(
        (response) => ,
        (err) => 
          alert(err);
        
      );
  , []);

  const DisplayData = data?.result?.CVE_Items?.map((vender) => 
    return (
      <tr>
        <td className="color_id font-semibold">
          vender?.cve?.CVE_data_meta?.ID
        </td>
        <td className="w-96">
          vender?.cve?.description?.description_data?.[0]?.value
        </td>
        <td>vender?.impact?.baseMetricV2?.exploitabilityScore</td>
        <td>vender?.impact?.baseMetricV2?.severity</td>
        <td>vender?.impact?.baseMetricV2?.impactScore</td>
      </tr>
    );
  );
  return (
    <div className="z-100 flex justify-center items-center mt-10">
      <div className="text-black">
        <div className="rounded overflow-hidden flex  justify-center items-center">
          <table class="table table-striped ">
            <thead>
              <tr>
                <th>Vuln ID</th>
                <th>Description Data</th>
                <th>Exploitability Score</th>
                <th>Severity</th>
                <th>Impact Score</th>
              </tr>
            </thead>
            <tbody>DisplayData</tbody>
          </table>
        </div>
      </div>
    </div>
  );
;

export default VendersDetail;

Pagination.js

从“反应”导入反应;

const Pagination = ( postsPerPage, totalPosts, paginate ) => 
  const pageNumbers = [];

  for (let i = 1; i <= Math.ceil(totalPosts / postsPerPage); i++) 
    pageNumbers.push(i);
  

  return (
    <nav>
      <ul className="pagination">
        pageNumbers.map((number) => (
          <li key=number className="page-item">
            <a onClick=() => paginate(number) href="!#" className="page-link">
              number
            </a>
          </li>
        ))
      </ul>
    </nav>
  );
;

export default Pagination;

如何在这个特定的数据列表中实现分页?谢谢

【问题讨论】:

【参考方案1】:

    使用逻辑创建父组件以从 URL 和分页 onCLick 处理程序获取数据。

    父组件应该渲染 VendorsDetail 组件和 Pagination 组件。

    将要显示的数据传递给 VendorsDetails 组件,并将 getSubsequentData 处理程序传递给 Pagination 组件。

    如果用户点击特定页码,调用 getSubsequentData 处理程序并使用特定参数,更新父组件的状态,这将更新 VendorsDetail 组件。

    const ParentComponent = () =>

     const [data, setData] = useState()
    
     useEffect = (() => 
       // axios call to get initial data from the URL
     )
    
     getSubsequentData = (URL) => 
       // axios call to get data based on the URL.
       // LInk this to pagination onClick
     
           return(
     <VendorsDetail data=data />
     <Pagination getNextData=getSubsequentData/>
    

    )

【讨论】:

感谢您的回答

以上是关于react.js中如何实现对表中列表数据的分页?的主要内容,如果未能解决你的问题,请参考以下文章

django的分页--不全也未实现

oracle分页查询语句怎么写每页查询10条

请问如何用jquery 实现html页面的分页查询

如何使用角度6的分页,过滤,排序功能在表组件中加载大数据

ExtJs3带条件的分页查询的实现

Java全栈web网页技术:16.书城项目实战五:图书的分页显示