亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

如何使用反應(yīng)引導(dǎo)分頁(yè)動(dòng)態(tài)新增分頁(yè)省略號(hào)?
P粉136356287
P粉136356287 2024-02-25 15:56:33
0
1
529

我有一個(gè)正常運(yùn)作的 API 項(xiàng)目,包括 Pagination.First、Pagination.Prev、Pagination.Item、Pagination.Next 和 Pagination.Last。

我想在其上添加 Pagination.Ellipsis 但我不知道如何將其插入到我的程式碼中。

查看分頁(yè)文件react-bootstrap.github.io

#這是我嘗試使用分頁(yè)省略號(hào) sandboxEllipses 實(shí)現(xiàn)的範(fàn)例。

下面是我的程式碼,也是沙箱程式碼 https://codesandbox.io/。

Movielist.js

#

import { React, useState, useEffect } from "react";
import { Col, Card, Row, Pagination } from "react-bootstrap";
import MovieListPagination from "./MovieListPagination";

const MovieList = () => {
  const [error, setError] = useState(null);
  const [isLoaded, setIsLoaded] = useState(false);
  const [items, setItems] = useState([]);
  // Default current pages and posts
  const [currentPage, setCurrentPage] = useState(1);
  const [postsPerPage] = useState(4);
  // Get current posts
  const indexOfLastPost = currentPage * postsPerPage;
  const indexOfFirstPost = indexOfLastPost - postsPerPage;
  const currentPosts = items.slice(indexOfFirstPost, indexOfLastPost);
  // Change page
  const paginate = (pageNumber) => setCurrentPage(pageNumber);

  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/posts")
      .then((res) => res.json())
      .then(
        (result) => {
          setIsLoaded(true);
          setItems(result);
          //console.log(result.results);
        },
        (error) => {
          setIsLoaded(true);
          setError(error);
        }
      );
  }, []);

  if (error) {
    return <div className="p-3">Error: {error.message}</div>;
  } else if (!isLoaded) {
    return <div className="p-3">Loading...</div>;
  } else {
    return (
      <>
        <Row className="justify-content-center">
          {currentPosts.map((item) => (
            <Col sm={6} lg={4} xl={3} className="py-3" key={item.id}>
              <Card bg="dark" text="light" className="text-center h-100">
                <Card.Body>
                  <Card.Title>{item.title}</Card.Title>
                  <Card.Text>{item.body}</Card.Text>
                </Card.Body>
              </Card>
            </Col>
          ))}
          <Pagination className="justify-content-center">
            <MovieListPagination
              currentPage={currentPage}
              postsPerPage={postsPerPage}
              totalPosts={items.length}
              paginate={paginate}
            />
          </Pagination>
        </Row>
      </>
    );
  }
};

export default MovieList;

MovielistPagination.js

import { React } from "react";
import { Pagination } from "react-bootstrap";

const MovieListPagination = ({
  currentPage,
  postsPerPage,
  totalPosts,
  paginate
}) => {
  const pageNumbers = [];
  const pagesCount = Math.ceil(totalPosts / postsPerPage);
  const isCurrentPageFirst = currentPage === 1;
  const isCurrentPageLast = currentPage === pagesCount;
  for (let i = 1; i <= pagesCount; i++) {
    pageNumbers.push(i);
  }
  return (
    <>
      <Pagination.First onClick={() => paginate(1)} />
      <Pagination.Prev
        onClick={() => paginate(currentPage - 1)}
        disabled={isCurrentPageFirst}
      />
      {pageNumbers.map((number) => (
        <Pagination.Item
          key={number}
          className={`${currentPage === number ? "active" : ""}`}
          onClick={() => {
            paginate(number);
          }}
        >
          {number}
        </Pagination.Item>
      ))}
      <Pagination.Next
        onClick={() => paginate(currentPage + 1)}
        disabled={isCurrentPageLast}
      />
      <Pagination.Last onClick={() => paginate(pagesCount)} />
    </>
  );
};

export default MovieListPagination;

我嘗試了一些解決辦法,例如 <Pagination.Ellipsis key={pageNumbers} className="muted" /> 和 ff 程式碼...但它不起作用。

  // Add ellipses if there are more pages to display
  if (pageNumbers[0] > 1) {
    pageNumbers.unshift(<Pagination.Ellipsis key="ellipsis-start" />);
  }
  if (pageNumbers[pageNumbers.length - 1] < totalPosts) {
    pageNumbers.push(<Pagination.Ellipsis key="ellipsis-end" />);
  }

P粉136356287
P粉136356287

全部回覆(1)
P粉492959599

目前我對(duì)問(wèn)題的回答是使用react-paginate。您可以在 codesandbox 上找到我的分叉答案。

我會(huì)保留我的問(wèn)題,也許有人可以幫忙。謝謝!

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板