В пагинации, иметь элементы массива 10 страниц, и в настоящее время на 4 страницах хочет изменить нумерацию страниц в соответствии с текущей страницей - PullRequest
0 голосов
/ 21 ноября 2019

Если у меня есть 10 страниц, а текущая страница - 4, то она должна вернуть 2,3,4,5,6 в качестве номера страницы. как текущая страница должна быть между. и предел страницы должен быть 5.

                            {pager.pages.map((page, index) => (
                                <PaginationLink
                                    className="pagination__link"
                                    type="button"
                                    onClick={() => this.setPage(page)}
                                >
                                    {page}
                                </PaginationLink>
                        ))} 
Output: 1 2 3 4 5 6 7 8 9 10

В настоящее время я использую эту функцию pager ():

    getPager = (totalItems, currentPage, pageSize) => {
    // default to first page
    currentPage = currentPage || 1;

    // default page size is 10
    pageSize = pageSize || 10;

    // calculate total pages
    const totalPages = Math.ceil(totalItems / pageSize);

    let startPage, endPage;
    if (totalPages <= 10) {
        // less than 10 total pages so show all
        startPage = 1;
        endPage = totalPages;
    } else {
        // more than 10 total pages so calculate start and end pages
        if (currentPage <= 6) {
            startPage = 1;
            endPage = 10;
        } else if (currentPage + 4 >= totalPages) {
            startPage = totalPages - 9;
            endPage = totalPages;
        } else {
            startPage = currentPage - 5;
            endPage = currentPage + 4;
        }
    }

    // calculate start and end item indexes
    const startIndex = (currentPage - 1) * pageSize;
    const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);

    // create an array of pages to ng-repeat in the pager control
    const pages = range(startPage, endPage + 1);

    // return object with all pager properties required by the view
    return {
        totalItems,
        currentPage,
        pageSize,
        totalPages,
        startPage,
        endPage,
        startIndex,
        endIndex,
        pages,
    };
};

Эта функция используется для получения массива пагинации со всеми необходимыми значениями.

...