1- import { useMemo } from 'react'
1+ import { useCallback , useMemo } from 'react'
22import { useHistory , useLocation , useRouteMatch } from 'react-router-dom'
33
44import { UseSearchAndPagination } from './types'
@@ -11,42 +11,54 @@ export function useSearchAndPagination(): UseSearchAndPagination {
1111
1212 const params = useMemo ( ( ) => new URLSearchParams ( routeQuery ) , [ routeQuery ] )
1313
14+ const search = useCallback (
15+ ( query : string ) => {
16+ if ( query === '' ) {
17+ params . delete ( 'search' )
18+ } else {
19+ params . set ( 'search' , query )
20+ }
21+ params . delete ( 'page' )
22+ params . delete ( 'size' )
23+
24+ routerHistory . push ( {
25+ pathname : routerUrl ,
26+ search : params . toString ( ) ,
27+ } )
28+ } ,
29+ [ routerHistory , params ]
30+ )
31+
32+ const clear = useCallback ( ( ) => {
33+ params . delete ( 'search' )
34+ params . delete ( 'page' )
35+ params . delete ( 'size' )
36+
37+ routerHistory . push ( {
38+ pathname : routerUrl ,
39+ search : params . toString ( ) ,
40+ } )
41+ } , [ routerHistory , params ] )
42+
43+ const setPage = useCallback (
44+ ( page : number ) => {
45+ params . set ( 'page' , page . toString ( ) )
46+ routerHistory . push ( {
47+ pathname : routerUrl ,
48+ search : params . toString ( ) ,
49+ } )
50+ } ,
51+ [ routerHistory , params ]
52+ )
53+
1454 return {
1555 search : params . get ( 'search' ) || '' ,
1656 page : convert ( params . get ( 'page' ) , 0 ) ,
1757 size : convert ( params . get ( 'size' ) , 15 ) ,
1858 actions : {
19- search : ( query : string ) => {
20- if ( query === '' ) {
21- params . delete ( 'search' )
22- } else {
23- params . set ( 'search' , query )
24- }
25- params . delete ( 'page' )
26- params . delete ( 'size' )
27-
28- routerHistory . push ( {
29- pathname : routerUrl ,
30- search : params . toString ( ) ,
31- } )
32- } ,
33- clear : ( ) => {
34- params . delete ( 'search' )
35- params . delete ( 'page' )
36- params . delete ( 'size' )
37-
38- routerHistory . push ( {
39- pathname : routerUrl ,
40- search : params . toString ( ) ,
41- } )
42- } ,
43- setPage : ( page : number ) => {
44- params . set ( 'page' , page . toString ( ) )
45- routerHistory . push ( {
46- pathname : routerUrl ,
47- search : params . toString ( ) ,
48- } )
49- } ,
59+ search,
60+ clear,
61+ setPage,
5062 } ,
5163 }
5264}
0 commit comments