i am trying to make a pagination and filter based on experience i want max only 10 items in a page i dont know how to get stated i have all the days dispayed and all day is now dispalyed in single page i want only 10 items in 1 page and next 10 items in next page
import { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import DocPic from "../img/doctor.png";
import InnerDetail from "./innerto_detail";
import axios from "axios";
export default function InnerSpecialities() {
const [hasId, setHasId] = useState(false);
const [detail, setDetail] = useState(false);
const [data, setdata] = useState([]);
const inipath = window.location.pathname;
const id_path = inipath.split("/cdoctor/details");
const path = inipath.split("/cdoctor/");
useEffect(() => {
const pathname = window.location.pathname;
const doctorId = pathname.split("/")[2];
console.log("this is the ", doctorId);
console.log(id_path);
const substring = "detiled";
console.log(inipath.includes(substring));
if (inipath.includes(substring) === true) {
setDetail(true);
}
const config = {
headers: {
Authorization: `token ` + localStorage.getItem("token"),
},
};
axios
.get(
"filter/?speciality=" +
path[1],
config
)
.then((res) => {
var somevariable = res;
setdata((data) => {
return [...data, somevariable];
});
setdata(res.data);
});
}, []);
function OpenInner() {
setDetail(true);
}
return (
<>
{detail ? (
<InnerDetail />
) : (
<div>
<div>
<div className="list-container" style={styles.options}>
<div style={styles.inneropt}>
<i style={styles.rotate} class="fa fa-exchange"></i>Sort By:
<select style={styles.sel}>
<option> Availability</option>
<option> Nearby</option>
<option> Price- Low to high</option>
<option> Price- High to low</option>
</select>{" "}
</div>
<div style={styles.inneropt}>
Gender:
<select style={styles.sel}>
<option> Male</option>
<option> Female</option>
</select>{" "}
</div>
<div style={styles.inneropt}>
Experience:
<select style={styles.sel}>
<option> 0-5</option>
<option> 5-10</option>
<option> 10-15</option>
<option> 15+ </option>
</select>{" "}
</div>
<div className="splang" style={styles.inneropt}>
Language:
<select style={styles.sel}>
<option> English</option>
<option> Malayaliam</option>
<option> Tamil</option>
<option> Kannada</option>
</select>{" "}
</div>
</div>
<div style={styles.container}>
{data.map((personData, key) => {
return (
<div style={styles.fbox}>
<div style={styles.fitem}>
<left>
<img src={DocPic} alt="" />
<br />
<i className="fa fa-video-camera"></i>
<br />
<small>Online</small>
</left>
<right style={{ textAlign: "left", marginLeft: "6px" }}>
<strong>
Dr {personData.firstname}
{personData.lastname}
</strong>
<br />
<small>
{" "}
{personData.speciality} |{personData.experience}
<small> years Exp.</small>
</small>
<br />
<strong>You Pay</strong>
<br />
<strong>$600</strong>
<br />
<small>
{personData.qualification}
{personData.location}
</small>
</right>
</div>
<Link
to={{
pathname: "/doctor/detiled/" + personData.id,
state: { id: personData.id, data: personData },
}}
onClick={OpenInner}
>
<button style={styles.book}>Book Appointments</button>
</Link>
</div>
);
})}
</div>
<div style={styles.pagination} className="pagination">
<div className="pager" style={{ margin: "auto", width: "30rem" }}>
<Link to="">
{" "}
<i className="fa fa-angle-left"></i>{" "}
</Link>
<Link to="">1</Link>
<Link to="">2</Link>
<Link to="">3</Link>
<Link to="">4</Link>
<Link to="">5</Link>
<Link to="">6</Link>
<Link to="">7</Link>
<Link to="">
{" "}
<i className="fa fa-angle-right"></i>{" "}
</Link>
</div>
</div>
</div>
</div>
)}
</>
);
}
i am trying to make a pagination and filter based on experience i want max only 10 items in a page i dont know how to get stated i have all the days dispayed and all day is now dispalyed in single page i want only 10 items in 1 page and next 10 items in next page