Demo

RequestIndexPaginationDto

စာရင်းမေးမြန်းမှုအတွက် စံပုံစံ argument ဖြစ်ပါသည် — currentPage / pageSize / ရွေးချယ်နိုင်သော query (နှင့် domain filter များ)။ Hook အတွင်းတွင် skip / limit သို့ ပြောင်းလဲအသုံးပြုရပါသည်။

RequestIndexPaginationDto

စာရင်းမေးမြန်းမှုအတွက် စံပုံစံ argument ဖြစ်ပါသည် — currentPage / pageSize / ရွေးချယ်နိုင်သော query (နှင့် domain filter များ)။ Hook အတွင်းတွင် skip / limit သို့ ပြောင်းလဲအသုံးပြုရပါသည်။

TSXfeature.queries.ts
1import { useQuery, type UseQueryOptions } from "@tanstack/react-query"; 2import type { RequestIndexPaginationDto } from "@quan-erp/shared-frontend-core"; 3import { getItemsApi } from "./feature.api"; 4 5function resolveIndexPagination( 6 query: RequestIndexPaginationDto = {}, 7 defaults: { pageSize?: number } = {}, 8) { 9 const currentPage = query.currentPage ?? 1; 10 const pageSize = query.pageSize ?? defaults.pageSize ?? 100; 11 const skip = (currentPage - 1) * pageSize; 12 return { currentPage, pageSize, skip, query: query.query }; 13} 14 15export function useItemsQuery( 16 query: RequestIndexPaginationDto = {}, 17 option?: Omit<UseQueryOptions<ItemDto[]>, "queryFn" | "queryKey">, 18) { 19 const { currentPage, pageSize, skip, query: search } = 20 resolveIndexPagination(query); 21 return useQuery({ 22 queryKey: ["items", currentPage, pageSize, search], 23 queryFn: () => getItemsApi.fetchFn(skip, pageSize), 24 ...(option || {}), 25 }); 26} 27 28// Call site 29const { data: items = [] } = useItemsQuery({ 30 currentPage: 1, 31 pageSize: 50, 32 query: "milk", 33});