From 16338bc3cd7eecabc05b1a82811f724af2d2b124 Mon Sep 17 00:00:00 2001 From: youngw77 Date: Fri, 11 Aug 2023 00:34:30 +0900 Subject: [PATCH 1/2] =?UTF-8?q?PagiNation=20total=20count=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Board/BoardList.tsx | 44 ++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/src/views/Board/BoardList.tsx b/src/views/Board/BoardList.tsx index fdc6ec3..9eb381b 100644 --- a/src/views/Board/BoardList.tsx +++ b/src/views/Board/BoardList.tsx @@ -1,14 +1,14 @@ -import React, { useState, useEffect, useContext } from "react"; +import React, { useState, useEffect, useContext, useRef } from "react"; import axios from "axios"; import { useNavigate } from "react-router-dom"; // Import the useHistory hook import { Board } from "../../interface/BoardListDto"; -import { ProgressSpinner } from "primereact/progressspinner"; import { Button } from "primereact/button"; import { DataTable } from "primereact/datatable"; import { Column } from "primereact/column"; import { InputText } from "primereact/inputtext"; import { errorHandle } from "../../Common/ErrorHandle"; import { Dropdown } from "primereact/dropdown"; +import { Paginator } from "primereact/paginator"; import { SearchOptioninterface } from "../../interface/SearchOption"; import { dateFormatFunc } from "../../Common/DateFormat"; import { ActiveIndexContext } from "../../context/ActiveIndexContext"; @@ -21,15 +21,19 @@ import "../../css/BoardList.css"; const BoardList = () => { const [board, setBoard] = useState([]); const [boardCategory, setBoardCategory] = useState([]); - const navigate = useNavigate(); const [inputSearch, setInputSearch] = useState(""); + const pagiNation = useRef(1); + const [totalCount, setTotalCount] = useState(0); + const [first, setFirst] = useState(0); + const [rowsPerPage, setRowsPerPage] = useState(10); const [selectedSearchOption, setSelectedSearchOption] = useState(); const { activeIndex, setActiveIndex }: ActiveIndexContextProviderProps = useContext(ActiveIndexContext); const [cookies, setCookie, removeCookie] = useCookies(["id"]); const accessToken = cookies.id; - const headers = {Authorization:'Bearer '+accessToken} + const headers = {Authorization:'Bearer '+accessToken}; + const navigate = useNavigate(); axios.defaults.baseURL = "http://localhost:5000"; @@ -40,12 +44,14 @@ const BoardList = () => { const { isSuccess, isError, isLoading, isFetching, data, error } = useQuery( 'getBoardList', - () => axios.get("/board", {headers}), + () => axios.get(`/board/?pageNo=${pagiNation.current}`, {headers}), { onSuccess: (data) => { console.log("onSuccess", data); console.log(data.data); + console.log(data.data.totalPage); setBoard(data.data.items); + setTotalCount(data.data.totalPage); }, onError: (error) => { console.log("onError", error); @@ -72,6 +78,7 @@ const BoardList = () => { } useEffect(() => { + // setFirst(pagiNation.current); if(isSuccess && data){ setBoard(data.data.items); } @@ -146,6 +153,25 @@ const BoardList = () => { } + const changePage = async (newPage: number) => { + try { + const response = await axios.get(`/board/?pageNo=${newPage}`, { headers }); + console.log(response); + setBoard(response.data.items); + setTotalCount(response.data.totalPage); + } catch (error) { + console.log("Error fetching data:", error); + } + }; + + const onPageChange = (event:any) => { + console.log(event); + setFirst(event.first); + setRowsPerPage(event.rows); + pagiNation.current = event.page; + changePage(event.page); + }; + return (
@@ -196,7 +222,7 @@ const BoardList = () => { @@ -206,6 +232,12 @@ const BoardList = () => { +
); }; From d300502aba4b92790c4d240ff51fe89fe29a6df2 Mon Sep 17 00:00:00 2001 From: youngw77 Date: Sat, 12 Aug 2023 23:50:37 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Pagination=201=EC=B4=88=20delay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Board/BoardList.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/Board/BoardList.tsx b/src/views/Board/BoardList.tsx index 9eb381b..c3dd0bb 100644 --- a/src/views/Board/BoardList.tsx +++ b/src/views/Board/BoardList.tsx @@ -155,6 +155,7 @@ const BoardList = () => { const changePage = async (newPage: number) => { try { + await new Promise((resolve) => setTimeout(resolve, 1000)); const response = await axios.get(`/board/?pageNo=${newPage}`, { headers }); console.log(response); setBoard(response.data.items);