11import { useRouter } from 'next/router'
2- import { useMemo } from 'react'
2+ import { useCallback , useMemo } from 'react'
33import {
44 Query ,
55 ParseQuery ,
@@ -28,8 +28,8 @@ const useNextRouter = (
2828 [ options ] ,
2929 )
3030
31- return {
32- getQuery : ( defaultQuery ) => {
31+ const getQuery = useCallback (
32+ ( defaultQuery : Query ) => {
3333 const query : Query = { }
3434 for ( const [ key , value ] of Object . entries ( nextRouter . query ) ) {
3535 if ( value !== undefined ) {
@@ -38,7 +38,11 @@ const useNextRouter = (
3838 }
3939 return { ...defaultQuery , ...query }
4040 } ,
41- setQuery : ( query , defaultQuery ) => {
41+ [ nextRouter . query ] ,
42+ )
43+
44+ const setQuery = useCallback (
45+ ( query : Partial < Query > , defaultQuery : Query ) => {
4246 const newQuery = { ...nextRouter . query , ...query }
4347 const newQueryWithoutDefaults = Object . fromEntries (
4448 Object . entries ( newQuery ) . filter (
@@ -55,7 +59,16 @@ const useNextRouter = (
5559 } )
5660 }
5761 } ,
58- }
62+ [ nextRouter , mergedOptions ] ,
63+ )
64+
65+ return useMemo (
66+ ( ) => ( {
67+ getQuery,
68+ setQuery,
69+ } ) ,
70+ [ getQuery , setQuery ] ,
71+ )
5972}
6073
6174export const useQuery = <
0 commit comments