Как реализовать гибкий переключатель страниц каталога товаров?

Задача состоит в следующем, у меня есть каталог с товарами.
От количества элементов в массиве зависит количество страниц в каталоге, которые задаются здесь:
<div className={styles.ItemsAndFlip}>
      <div className={styles.items}>{block}</div>
      <div className={styles.flipping}>
        {z.map((item) => (
          <p onClick={reading}>{item}</p>
        ))}
      </div>
    </div>

А здесь я пушу в массив индекс каждого элемента внутри массива Json:
let z = [];
  Json.forEach((item, index) => {
    z.push(index);
  });


Всё остальное происходит здесь:
import React, { useState } from "react";
import Json from "../JSON/jsonBackEnd";
import styles from "../Drawer.module.scss";

function Products() {
  const [pages, setPages] = useState(0);
  const reading = (event) => {
    setPages(event.target.innerHTML);
  };
  const [checked, setChecked] = useState();
  const check = (event) => {
    setChecked(event.target.innerHTML);
  };

  let block = Json[pages].map((item) => (
    <div className={styles.item_description}>
      <img src={item.image} />
      <div className={styles.double}>
        <p className={styles.quantity}>{item.quantity}</p>
        <p className={styles.priceLow}>{item.price}</p>
      </div>
      <p className={styles.name}>{item.name}</p>
      <p className={styles.price}>{item.price}</p>
    </div>
  ));
  let z = [];
  Json.forEach((item, index) => {
    z.push(index);
  });

  return (
    <div className={styles.ItemsAndFlip}>
      <div className={styles.items}>{block}</div>
      <div className={styles.flipping}>
        {z.map((item) => (
          <p onClick={reading}>{item}</p>
        ))}
      </div>
    </div>
  );
}

export default Products;


Вопрос состоит в следующем. Как сделать так, чтобы, допустим, если в массиве у меня будет 200 элементов, то этот код отобразил мне не все цифры от 1 до 200, а, например, только 4 цифры?
Т.е., сначала от 0 до 5, когда перешел на 1 страницу, то с 0 до 5, когда перешел на 2 страницу, то со 1 до 6, когда перешел на 3 страницу, то отображать страницы со 2 до 7... и когда на 196 странице, то отображать со 195 по 199 страницы.

Как это сделать на практике?

Помогите, плиз. С меня благодарность.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы