11import { useRouter } from 'next/router'
2- import { useMemo } from 'react'
2+ import { useEffect , useMemo , useState } from 'react'
33import {
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