1- import { useCallback , useMemo } from 'react'
1+ import { useMemo } from 'react'
22import { useHistory , useLocation , useRouteMatch } from 'react-router-dom'
33
4- import { UseSearchQuery , UsePagination , UseSearchAndPagination } from './types'
4+ import { UseSearchAndPagination } from './types'
55import { convert } from './utils'
66
7- export function useSearch ( ) : UseSearchQuery {
7+ export function useSearchAndPagination ( ) : UseSearchAndPagination {
88 const routerHistory = useHistory ( )
99 const { url : routerUrl } = useRouteMatch ( )
1010 const { search : routeQuery } = useLocation ( )
@@ -13,7 +13,9 @@ export function useSearch(): UseSearchQuery {
1313
1414 return {
1515 search : params . get ( 'search' ) || '' ,
16- searchActions : {
16+ page : convert ( params . get ( 'page' ) , 0 ) ,
17+ size : convert ( params . get ( 'size' ) , 15 ) ,
18+ actions : {
1719 search : ( query : string ) => {
1820 if ( query === '' ) {
1921 params . delete ( 'search' )
@@ -38,43 +40,13 @@ export function useSearch(): UseSearchQuery {
3840 search : params . toString ( ) ,
3941 } )
4042 } ,
43+ setPage : ( page : number ) => {
44+ params . set ( 'page' , page . toString ( ) )
45+ routerHistory . push ( {
46+ pathname : routerUrl ,
47+ search : params . toString ( ) ,
48+ } )
49+ } ,
4150 } ,
4251 }
4352}
44-
45- export function usePagination ( ) : UsePagination {
46- const routerHistory = useHistory ( )
47- const { search : routeQuery } = useLocation ( )
48- const { url : routerUrl } = useRouteMatch ( )
49-
50- const params = useMemo ( ( ) => new URLSearchParams ( routeQuery ) , [ routeQuery ] )
51-
52- const setPage = useCallback (
53- ( page : number ) => {
54- params . set ( 'page' , page . toString ( ) )
55- routerHistory . push ( {
56- pathname : routerUrl ,
57- search : params . toString ( ) ,
58- } )
59- } ,
60- [ params , routerHistory , routerUrl ]
61- )
62-
63- return {
64- page : convert ( params . get ( 'page' ) , 0 ) ,
65- size : convert ( params . get ( 'size' ) , 15 ) ,
66- paginationActions : {
67- setPage,
68- } ,
69- }
70- }
71-
72- export function useSearchAndPagination ( ) : UseSearchAndPagination {
73- const searchParameters = useSearch ( )
74- const paginationParameters = usePagination ( )
75-
76- return {
77- ...searchParameters ,
78- ...paginationParameters ,
79- }
80- }
0 commit comments