1+ import { useCallback , useMemo } from 'react'
12import { queryValueToIntOrUndefined } from '../utils'
23import {
34 Query ,
@@ -56,14 +57,21 @@ export const useAbstractQueryAndPagination = <
5657 defaultPagination ?: Partial < PaginationQuery > ,
5758 options ?: Partial < AbstractQueryOptions > ,
5859) => {
59- const mergedDefaultPagination = {
60- ...DEFAULT_PAGINATION ,
61- ...defaultPagination ,
62- }
63- const mergedDefaultQueryAndPagination = {
64- ...defaultQuery ,
65- ...mergedDefaultPagination ,
66- }
60+ const mergedDefaultPagination = useMemo (
61+ ( ) => ( {
62+ ...DEFAULT_PAGINATION ,
63+ ...defaultPagination ,
64+ } ) ,
65+ [ defaultPagination ] ,
66+ )
67+
68+ const mergedDefaultQueryAndPagination = useMemo (
69+ ( ) => ( {
70+ ...defaultQuery ,
71+ ...mergedDefaultPagination ,
72+ } ) ,
73+ [ defaultQuery , mergedDefaultPagination ] ,
74+ )
6775
6876 const { query, setQuery } = useAbstractQuery (
6977 router ,
@@ -83,12 +91,8 @@ export const useAbstractQueryAndPagination = <
8391 options ,
8492 )
8593
86- return {
87- query,
88- setQuery : (
89- query : Partial < TQuery > ,
90- options ?: Partial < ChangeQueryOptions > ,
91- ) => {
94+ const setQueryWithoutPagination = useCallback (
95+ ( query : Partial < TQuery > , options ?: Partial < ChangeQueryOptions > ) => {
9296 const mergedOptions = { ...DEFAULT_CHANGE_QUERY_OPTIONS , ...options }
9397 setQuery ( {
9498 ...query ,
@@ -97,7 +101,11 @@ export const useAbstractQueryAndPagination = <
97101 : undefined ,
98102 } )
99103 } ,
100- resetQuery : ( options ?: Partial < ChangeQueryOptions > ) => {
104+ [ setQuery , mergedDefaultPagination . page ] ,
105+ )
106+
107+ const resetQuery = useCallback (
108+ ( options ?: Partial < ChangeQueryOptions > ) => {
101109 const mergedOptions = { ...DEFAULT_CHANGE_QUERY_OPTIONS , ...options }
102110 setQuery ( {
103111 ...defaultQuery ,
@@ -106,18 +114,37 @@ export const useAbstractQueryAndPagination = <
106114 : undefined ,
107115 } )
108116 } ,
109- page : pagination . page ,
110- size : pagination . size ,
111- setPage : ( page : PaginationQuery [ 'page' ] ) => {
117+ [ defaultQuery , mergedDefaultPagination . page , setQuery ] ,
118+ )
119+
120+ const setPage = useCallback (
121+ ( page : PaginationQuery [ 'page' ] ) => {
112122 setPagination ( { page } )
113123 } ,
114- setSize : ( size : PaginationQuery [ 'size' ] ) => {
124+ [ setPagination ] ,
125+ )
126+
127+ const setSize = useCallback (
128+ ( size : PaginationQuery [ 'size' ] ) => {
115129 setPagination ( { size } )
116130 } ,
131+ [ setPagination ] ,
132+ )
133+
134+ const resetQueryAndPagination = useCallback ( ( ) => {
135+ setQuery ( mergedDefaultQueryAndPagination )
136+ } , [ setQuery , mergedDefaultQueryAndPagination ] )
137+
138+ return {
139+ query,
140+ setQuery : setQueryWithoutPagination ,
141+ resetQuery,
142+ page : pagination . page ,
143+ size : pagination . size ,
144+ setPage,
145+ setSize,
117146 setPagination,
118147 resetPagination,
119- resetQueryAndPagination : ( ) => {
120- setQuery ( mergedDefaultQueryAndPagination )
121- } ,
148+ resetQueryAndPagination,
122149 }
123150}
0 commit comments