'use client'; import React, { useState, useEffect } from "react"; import { apiGetFetcher, apiPostFetcher, apiPutFetcher, apiDeleteFetcher, apiPatchFetcher, } from "@/lib/fetcher"; import { Input } from "@/components/mutual/shadcnui/input"; import { Textarea } from "@/components/mutual/shadcnui/textarea"; import { Button } from "@/components/mutual/shadcnui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/mutual/shadcnui/table"; import { Label } from "@/components/mutual/shadcnui/label"; const TestPage = () => { const baseUrl = "http://localhost:3000/api"; const [postData, setPostData] = useState(null); const [page, setPage] = useState(1); const [pageSize, setPageSize] = useState(10); const [orderField, setOrderField] = useState([]); const [orderType, setOrderType] = useState([]); const [query, setQuery] = useState({}); const [pagination, setPagination] = useState({ onPage: 1, onPageCount: 10, totalPage: 1, totalCount: 1, next: false, back: false, }); const handleBack = async () => { setPage(page > 1 ? page - 1 : page); await fetchData(); } const handleNext = async () => { setPage(page < pagination.totalPage ? page + 1 : page); await fetchData(); } const fetchData = async () => { const response = await apiPostFetcher({ url: `${baseUrl}/tst`, isNoCache: true, body: { page: page, size: pagination.onPageCount, orderField: orderField, orderType: orderType, query: query, }, }); // Check if response and response.data exist before setting state if (response && response.data) { setPostData(response.data); // Check if pagination exists in the response if (response.data.pagination) { setPagination(response.data.pagination); } } }; useEffect(() => { fetchData(); }, [page, query, orderField, orderType]); return (
setPageSize(Number(e.target.value))} /> setOrderField(e.target.value.split(","))} /> setOrderType(e.target.value.split(","))} />

Page: {pagination.onPage}

Page Count: {pagination.onPageCount}

Total Page: {pagination.totalPage}

Total Count: {pagination.totalCount}

Next: {pagination.next ? "true" : "false"}

Back: {pagination.back ? "true" : "false"}

Post Data Page

Row UUID First Name Last Name Email Phone Number Country Description Is Deleted Is Confirmed Created At Updated At {postData?.data?.map((item: any, index: number) => ( {index + 1} {item.uuid} {item.firstName} {item.lastName} {item.email} {item.phoneNumber} {item.country} {item.description} {item.isDeleted} {item.isConfirmed} {item.createdAt} {item.updatedAt} ))}
{ pagination.back && ( ) } { pagination.next && ( ) }
); } export default TestPage;