Я делаю компонент для нумерации страниц, но в двух случаях логика работы неверна, но я не вижу, где.
Пример необходимой нумерации страниц по React: https://tech.skbkontur.ru/react-ui/#!/Paging
Моя проблема в том, что после 8 страниц после переключения на 4 и 5, 6 и 7 должны появиться соответственно, и "1 2 3 4 5 6 7 8" должно остаться, но после перехода на 6 я буду есть это "1 ... 3 4 5 6 7 8"
Вот функция, отвечающая за формирование списка страниц:
private getPages(currentPage: number, totalPages: number): Page[] {
const pages: Page[] = [];
let startPage = 1;
let endPage = totalPages;
const isMaxSized = this.maxSize < totalPages;
if (isMaxSized) {
startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);
endPage = startPage + this.maxSize - 2;
if (this.page >= 1 && this.page <= 5) {
endPage = startPage + this.maxSize - 3;
}
if (this.page >= this.totalPages - 4) {
endPage = startPage + this.maxSize - 1;
}
if (this.page === 4 || this.page === 5) {
endPage++;
}
if (endPage > totalPages) {
endPage = totalPages;
// startPage = endPage - this.maxSize + 4;
}
}
for (let num = startPage; num <= endPage; num++) {
const page = PaginationComponent.makePage(num, num.toString(), num === currentPage);
pages.push(page);
}
if (totalPages > 7) {
if (startPage > 1) {
const previousPageSet = PaginationComponent.makePage(startPage - 1, '...', false);
pages.unshift(previousPageSet);
}
if (endPage < totalPages) {
const nextPageSet = PaginationComponent.makePage(endPage + 1, '...', false);
pages.push(nextPageSet);
}
}
return pages;
}