Skip to content

Commit 5aca733

Browse files
author
devgioele
committed
check that next router is ready
1 parent e40a21e commit 5aca733

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

src/routers/nextRouter.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useRouter } from 'next/router'
2-
import { useMemo } from 'react'
2+
import { useEffect, useMemo, useState } from 'react'
33
import {
44
Query,
55
ParseQuery,
@@ -22,24 +22,33 @@ const useNextRouter = (
2222
options: undefined | Partial<RouterWithHistoryOptions>,
2323
): Router => {
2424
const nextRouter = useRouter()
25+
const [nextRouterQuery, setNextRouterQuery] = useState<
26+
typeof nextRouter.query
27+
>({})
2528

2629
const mergedOptions = useMemo(
2730
() => ({ ...DEFAULT_NEXT_ROUTER_OPTIONS, ...options }),
2831
[options],
2932
)
3033

34+
useEffect(() => {
35+
if (nextRouter.isReady) {
36+
setNextRouterQuery(nextRouter.query)
37+
}
38+
}, [nextRouter.isReady, nextRouter.query])
39+
3140
return {
3241
getQuery: (defaultQuery) => {
3342
const query: Query = {}
34-
for (const [key, value] of Object.entries(nextRouter.query)) {
43+
for (const [key, value] of Object.entries(nextRouterQuery)) {
3544
if (value !== undefined) {
3645
query[key] = value
3746
}
3847
}
3948
return { ...defaultQuery, ...query }
4049
},
4150
setQuery: (query, defaultQuery) => {
42-
const newQuery = { ...nextRouter.query, ...query }
51+
const newQuery = { ...nextRouterQuery, ...query }
4352
const newQueryWithoutDefaults = Object.fromEntries(
4453
Object.entries(newQuery).filter(
4554
([key, value]) => value !== defaultQuery[key],

0 commit comments

Comments
 (0)