我是Vue开发人员多年来,

问题描述 投票:0回答:0

"use client"; import getUsers from "@/src/lib/service/user/GetUsers"; import { Avatar, Pagination } from "@mui/material"; import { useRouter } from "next/navigation"; import { useSearchParams } from "next/navigation"; import { QueryClient, QueryClientProvider, useQuery, } from "@tanstack/react-query"; import { useState } from "react"; const queryClient = new QueryClient(); function UsersListInner() { const searchParams = useSearchParams(); const router = useRouter(); const [currentPage, setCurrentPage] = useState<number>( Number(searchParams.get("page") || 1) ); const { data } = useQuery({ queryKey: ["userList", currentPage], queryFn: () => getUsers({ page: currentPage }), staleTime: 0 },); const handleChange = (event: React.ChangeEvent<unknown>, value: number) => { router.push(`?page=${value}`); setCurrentPage(value); }; const totalPage = Math.ceil( (data?.pagination.total_count || 1) / (data?.pagination.item_per_page || 1) ); return ( <div> {data?.data.map((u) => ( <div className="border-b p-4 flex gap-2 items-center" key={u.id}> <Avatar src="/images/person.svg" /> <div>{u.fullName}</div> <div dir="ltr">{u.phone}</div> </div> ))} {data && ( <Pagination page={currentPage} count={totalPage} onChange={handleChange} /> )} </div> ); } export default function UsersList() { return ( <QueryClientProvider client={queryClient}> <UsersListInner /> </QueryClientProvider> ); }

当您看到这是

client组件

我已经使用

Tanstack

进行缓存。

当我单击下一页时,路由(?页面:2)获取更新并调用API,
但显示了先前的数据。

问题是什么? 我可以解决这个问题吗?

您认为下一个JS的最佳实践分页是什么?

我可以找到错误,这是导致省略搜索参数的fetch api中的一个错误。

但我仍然不喜欢这种方法是最好的做法,请

help

我找到了分页的最佳方法。

next.js pagination tanstackreact-query nextjs-15
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.