Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 5x 5x 5x 5x 3x 3x 3x 1x 1x 1x 5x 5x | import { useQuery } from "react-query"; import { useSearchParams } from "react-router-dom"; import Banner from "../../components/Banner"; import Packages from "../../components/Packages"; function Store() { const [searchParams, setSearchParams] = useSearchParams(); const currentPage = searchParams.get("page") || "1"; const queryString = searchParams.get("q") || ""; const getData = async () => { let queryParam = `page=${currentPage}`; Iif (queryString) { queryParam += `&q=${queryString}`; } const response = await fetch(`/store.json?${queryParam}`); const data = await response.json(); const packagesWithId = data.packages.map((item: string[]) => ({ ...item, id: crypto.randomUUID(), })); return { totalItems: data.total_items, totalPages: data.total_pages, packages: packagesWithId, }; }; const { data, status, isFetching } = useQuery( ["data", currentPage, queryString], getData ); return ( <> <Banner /> <Packages isFetching={isFetching} numOfTotalItems={data?.totalItems} status={status} packages={data?.packages} onPageChange={(pageNumber) => { searchParams.set("page", pageNumber.toString()); setSearchParams(searchParams); }} currentPage={parseInt(currentPage)} /> </> ); } export default Store; |