尝试创建一个状态来跟踪参数
import { useState } from "react";
import { useSearchParams, usePathname, useRouter } from "next/navigation";
export const useParams = () => {
const searchParams = useSearchParams();
const router = useRouter();
const pathname = usePathname();
const [params, setParamsState] = useState(new URLSearchParams(searchParams));
const setParams = (key: string, value: string) => {
const updatedParams = new URLSearchParams(params);
updatedParams.set(key, value);
setParamsState(updatedParams);
router.replace(`${pathname}?${updatedParams.toString()}`);
};
return { setParams };
};
第.tsx页
const { setParams } = useParams();
const handleChangePageSize = (size: number) => {
setParams('pageSize', size.toString());
};
const handleSetPage = (pageNumber: number) => {
setParams('pageNumber', pageNumber.toString());
};
<button
onClick={() => {
handleChangePageSize(Math.floor(Math.random() * 100));
}}
>
Set Page Size
</button>
<button
onClick={() => {
handleSetPage(Math.floor(Math.random() * 100));
}}
>
Set Page
</button>