Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想限制React js中分页编号的数量?_Javascript_Reactjs_Pagination_React Router_React Hooks - Fatal编程技术网

Javascript 我想限制React js中分页编号的数量?

Javascript 我想限制React js中分页编号的数量?,javascript,reactjs,pagination,react-router,react-hooks,Javascript,Reactjs,Pagination,React Router,React Hooks,我想限制分页的数量!我正在使用useEffect和Axios从后端获取页数!在循环这些数字并在JSX中显示它们之后!但我不能限制这个数字!你能帮我吗?这是代码 const [pageNumber, setPageNumber] = useState(); 在这里,我使用use params从URL获取pagenumlink const params = useParams(); // console.log(params); let pageNumLink = params.page;

我想限制分页的数量!我正在使用useEffect和Axios从后端获取页数!在循环这些数字并在JSX中显示它们之后!但我不能限制这个数字!你能帮我吗?这是代码

const [pageNumber, setPageNumber] = useState();
在这里,我使用use params从URL获取pagenumlink

const params = useParams();
  // console.log(params);
let pageNumLink = params.page;
在我使用useEffect从后端获取页码之后

useEffect(() => {
    const fetchBlogs = async () => {
      try {
        const res = await axios.get(
          `${process.env.REACT_APP_API_URL}/article/list/${pageNumLink}`
        );
        setArticleData(res.data.articles);
        setPageNumber(res.data.pageCount);
      } catch (err) {}
    };
    fetchBlogs();
  }, [pageNumLink]);
在我为它循环页码之后

  var pagesArray = [];
  for (let i = 1; i <= pageNumber; i++) {
    pagesArray.push(<Link to={`/articles/${i}`}>{i}</Link>);
  }
var pagesArray=[];

for(设i=1;i获取当前页面和总页数。假设当前页面为1,总页数为9。将当前页面和总页数保存在变量中

如果逻辑是当前页面(1)、下两个页面(2、3)和最后一个页面(9)应该出现,则需要创建组件以提供:

(页码、页码+2、页码+3…总页数)

我认为您不需要为此创建循环或映射,因为您事先知道输出。只需执行以下操作:

<Link to={`/articles/${i}`}>{pageNumber}</Link>
<Link to={`/articles/${i}`}>{pageNumber + 2}</Link>
<Link to={`/articles/${i}`}>{pageNumber + 3}</Link>
... <Link to={`/articles/${i}`}>{totalPages}</Link>
{pageNumber}
{pageNumber+2}
{pageNumber+3}
…{totalPages}
要处理的大小写:当前页是总页数,或在总页数的2以内。(例如,第7、8、9页)。在这种情况下,您不希望显示…9。请添加一个条件以说明此情况

<Link to={`/articles/${pageNumber}`}>{pageNumber}</Link>
<Link to={`/articles/${pageNumber + 2}`}>{pageNumber + 2}</Link>
<Link to={`/articles/${pageNumber + 3}`}>{pageNumber + 3}</Link>
if(currentPage <== totalPages - 2) {
   ... <Link to={`/articles/${totalPages}`}>{totalPages}</Link>
}
{pageNumber}
{pageNumber+2}
{pageNumber+3}

if(currentPage)设置一个限制,一旦达到该限制,退出循环。对于最后一页,只需将其从数组中弹出即可。
<Link to={`/articles/${pageNumber}`}>{pageNumber}</Link>
<Link to={`/articles/${pageNumber + 2}`}>{pageNumber + 2}</Link>
<Link to={`/articles/${pageNumber + 3}`}>{pageNumber + 3}</Link>
if(currentPage <== totalPages - 2) {
   ... <Link to={`/articles/${totalPages}`}>{totalPages}</Link>
}