Fix:use typed query initially fill default paramaters (#12568)
This commit is contained in:
parent
7f23ae156b
commit
c11ecbb323
|
@ -1,5 +1,5 @@
|
||||||
import { usePathname, useRouter } from "next/navigation";
|
import { usePathname, useRouter } from "next/navigation";
|
||||||
import { useCallback, useMemo } from "react";
|
import { useCallback, useMemo, useEffect } from "react";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { useRouterQuery } from "./useRouterQuery";
|
import { useRouterQuery } from "./useRouterQuery";
|
||||||
|
@ -46,6 +46,17 @@ export function useTypedQuery<T extends z.AnyZodObject>(schema: T) {
|
||||||
return {} as Output;
|
return {} as Output;
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (parsedQuerySchema.success && parsedQuerySchema.data) {
|
||||||
|
Object.entries(parsedQuerySchema.data).forEach(([key, value]) => {
|
||||||
|
if (key in unparsedQuery || !value) return;
|
||||||
|
const search = new URLSearchParams(parsedQuery);
|
||||||
|
search.set(String(key), String(value));
|
||||||
|
router.replace(`${pathname}?${search.toString()}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [parsedQuerySchema, schema, router, pathname, unparsedQuery, parsedQuery]);
|
||||||
|
|
||||||
if (parsedQuerySchema.success) parsedQuery = parsedQuerySchema.data;
|
if (parsedQuerySchema.success) parsedQuery = parsedQuerySchema.data;
|
||||||
else if (!parsedQuerySchema.success) console.error(parsedQuerySchema.error);
|
else if (!parsedQuerySchema.success) console.error(parsedQuerySchema.error);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user