TanStackT
TanStack2y ago
11 replies
faint-white

Not working pagination ref paramter with refetch

useUserQuery.ts
export default function useUserQuery() {
  const queryClient = useQueryClient();
  const searchQuery = ref<UserSearchQuery>({
    page: 1,
    limit: 10
  });
  const { data, isLoading, isError, isFetching, refetch } = useQuery<PayloadUser>(
    [QueryKey.User],
    () => getData(searchQuery.value).then((res) => res.data),
    {
      keepPreviousData: true,
    }
  );

  return {
    searchQuery,
    data,
    isLoading,
    isFetching,
    isError,
    refetch
  };
}

user.vue
<script lang="ts" setup>
import useUserQuery from "@/composables/useUserQuery";

const { searchQuery, isLoading, data, isFetching, refetch } = useUserQuery();
const currentPageChange = (page) => {
  searchQuery.value.page = page;
  refetch()
};

const itemsPerPageChange = (limit) => {
  searchQuery.value.limit = limit;
  refetch()
};
</script>
<template>
....
</template>

If I change limit or page, again call with initial searchQuery ref value
etc
If I changed limit = 100,
1. call api with limit = 100
2. again call api with limit = 10 = initial value
Was this page helpful?