fix: correct initial state values and improve pagination handling in TableList component
This commit is contained in:
@@ -34,9 +34,9 @@ const TableList = memo(function TableList({
|
|||||||
|
|
||||||
const [data, setData] = useState([]);
|
const [data, setData] = useState([]);
|
||||||
const [pagingResponse, setPagingResponse] = useState({
|
const [pagingResponse, setPagingResponse] = useState({
|
||||||
totalData: '',
|
totalData: 0,
|
||||||
perPage: '',
|
perPage: 0,
|
||||||
totalPage: '',
|
totalPage: 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
const [pagination, setPagination] = useState({
|
const [pagination, setPagination] = useState({
|
||||||
@@ -62,30 +62,38 @@ const TableList = memo(function TableList({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const param = new URLSearchParams({ ...paging, ...queryParams });
|
const param = new URLSearchParams({ ...paging, ...queryParams });
|
||||||
|
|
||||||
const resData = await getData(param);
|
const resData = await getData(param);
|
||||||
|
|
||||||
if (resData) {
|
if (resData) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setGridLoading(false);
|
setGridLoading(false);
|
||||||
}, 900);
|
}, 900);
|
||||||
|
} else {
|
||||||
|
setGridLoading(false);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setData(resData.data.data ?? []);
|
const dataToSet = resData.data?.data ?? resData.data ?? [];
|
||||||
setFilterData(resData.data.data ?? []);
|
setData(dataToSet);
|
||||||
|
setFilterData(dataToSet);
|
||||||
|
|
||||||
if (resData.status == 200) {
|
if (resData.status == 200) {
|
||||||
setPagingResponse({
|
const pagingData = resData.data?.paging;
|
||||||
totalData: resData.paging.total_limit,
|
|
||||||
perPage: resData.paging.page_total,
|
|
||||||
totalPage: resData.paging.total_page,
|
|
||||||
});
|
|
||||||
|
|
||||||
setPagination((prev) => ({
|
if (pagingData) {
|
||||||
...prev,
|
setPagingResponse({
|
||||||
current: resData.paging.current_page,
|
totalData: pagingData.total || 0,
|
||||||
limit: resData.paging.current_limit,
|
perPage: pagingData.limit || 0,
|
||||||
total: resData.paging.total_limit,
|
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) => ({
|
setPagination((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
current: page,
|
current: page,
|
||||||
pageSize,
|
limit: pageSize,
|
||||||
}));
|
}));
|
||||||
filter(page, pageSize);
|
filter(page, pageSize);
|
||||||
};
|
};
|
||||||
@@ -138,7 +146,7 @@ const TableList = memo(function TableList({
|
|||||||
<Row justify="space-between" align="middle">
|
<Row justify="space-between" align="middle">
|
||||||
<Col>
|
<Col>
|
||||||
<div>
|
<div>
|
||||||
Menampilkan {pagingResponse.totalPage} Data dari {pagingResponse.perPage}{' '}
|
Menampilkan {pagingResponse.totalData} Data dari {pagingResponse.totalPage}{' '}
|
||||||
Halaman
|
Halaman
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
@@ -148,7 +156,7 @@ const TableList = memo(function TableList({
|
|||||||
onChange={handlePaginationChange}
|
onChange={handlePaginationChange}
|
||||||
onShowSizeChange={handlePaginationChange}
|
onShowSizeChange={handlePaginationChange}
|
||||||
current={pagination.current}
|
current={pagination.current}
|
||||||
pageSize={pagination.pageSize}
|
pageSize={pagination.limit}
|
||||||
total={pagination.total}
|
total={pagination.total}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
|
|||||||
Reference in New Issue
Block a user