From 6a9bbb2b5eb16321885f20b5892aa2d724a4c8f1 Mon Sep 17 00:00:00 2001 From: vinix Date: Mon, 20 Oct 2025 15:41:16 +0700 Subject: [PATCH] fix: correct initial state values and improve pagination handling in TableList component --- src/components/Global/TableList.jsx | 48 +++++++++++++++++------------ 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/components/Global/TableList.jsx b/src/components/Global/TableList.jsx index 4630bc8..840fc9a 100644 --- a/src/components/Global/TableList.jsx +++ b/src/components/Global/TableList.jsx @@ -34,9 +34,9 @@ const TableList = memo(function TableList({ const [data, setData] = useState([]); const [pagingResponse, setPagingResponse] = useState({ - totalData: '', - perPage: '', - totalPage: '', + totalData: 0, + perPage: 0, + totalPage: 0, }); const [pagination, setPagination] = useState({ @@ -62,30 +62,38 @@ const TableList = memo(function TableList({ }; const param = new URLSearchParams({ ...paging, ...queryParams }); - const resData = await getData(param); + if (resData) { setTimeout(() => { setGridLoading(false); }, 900); + } else { + setGridLoading(false); + return; } - setData(resData.data.data ?? []); - setFilterData(resData.data.data ?? []); + const dataToSet = resData.data?.data ?? resData.data ?? []; + setData(dataToSet); + setFilterData(dataToSet); if (resData.status == 200) { - setPagingResponse({ - totalData: resData.paging.total_limit, - perPage: resData.paging.page_total, - totalPage: resData.paging.total_page, - }); + const pagingData = resData.data?.paging; - setPagination((prev) => ({ - ...prev, - current: resData.paging.current_page, - limit: resData.paging.current_limit, - total: resData.paging.total_limit, - })); + if (pagingData) { + setPagingResponse({ + totalData: pagingData.total || 0, + perPage: pagingData.limit || 0, + totalPage: pagingData.page_total || 0, + }); + + setPagination((prev) => ({ + ...prev, + current: pagingData.page || 1, + limit: pagingData.limit || 10, + total: pagingData.total || 0, + })); + } } }; @@ -93,7 +101,7 @@ const TableList = memo(function TableList({ setPagination((prev) => ({ ...prev, current: page, - pageSize, + limit: pageSize, })); filter(page, pageSize); }; @@ -138,7 +146,7 @@ const TableList = memo(function TableList({
- Menampilkan {pagingResponse.totalPage} Data dari {pagingResponse.perPage}{' '} + Menampilkan {pagingResponse.totalData} Data dari {pagingResponse.totalPage}{' '} Halaman
@@ -148,7 +156,7 @@ const TableList = memo(function TableList({ onChange={handlePaginationChange} onShowSizeChange={handlePaginationChange} current={pagination.current} - pageSize={pagination.pageSize} + pageSize={pagination.limit} total={pagination.total} />