@@ -29,35 +29,36 @@ const prevPageCacheMap: Map<string, number> = new Map();
2929const QUERY_MODE = 'query' ;
3030const SEARCH_MODE = 'search' ;
3131
32- totalPagesCacheMap . set ( QUERY_MODE , 1 ) ;
33- totalPagesCacheMap . set ( SEARCH_MODE , 1 ) ;
34-
3532prevPageCacheMap . set ( QUERY_MODE , 0 ) ;
3633prevPageCacheMap . set ( SEARCH_MODE , 0 ) ;
3734
3835const TeamData = ( ) => {
39- const [ page , setPage ] = useState ( - 1 ) ;
36+ const [ page , setPage ] = useState ( 0 ) ;
4037 const [ keyword , setKeyword ] = useState ( prevKeyword ) ;
4138 const isSearchMode = keyword . trim ( ) . length > 0 ;
4239
40+ const handleKeywordChange = ( newKeyword : string ) => {
41+ setKeyword ( newKeyword ) ;
42+ setPage ( 0 ) ;
43+ } ;
44+
4345 const { data : queryData , isPending : queryPending } = useQuery ( {
44- queryKey : [ 'team-list' , page === - 1 ? 0 : page ] ,
45- queryFn : ( ) => getTeamList ( 'recent' , page === - 1 ? 0 : page , 6 ) ,
46- //placeholdreData에서 prevData ?? queryclient.getQueryData(['team-list', 이전 페이지`])
47- // 위의 코드는 사용시 플로우를 완전히 제어 못할 거 같음
48- // placeholderData : (prevData) => ({ prevData }) } ,
49- select : ( data ) => ( {
50- myTeams : data . myTeams ,
51- otherTeams : data . allTeams . content ,
52- totalPages : data . allTeams . totalPages ,
53- } ) ,
46+ queryKey : [ 'team-list' , page ] ,
47+ queryFn : ( ) => getTeamList ( 'recent' , page , 6 ) ,
48+ select : ( data ) => {
49+ return {
50+ myTeams : data . myTeams ,
51+ otherTeams : data . allTeams . content ,
52+ totalPages : data . allTeams . page . totalPages ,
53+ } ;
54+ } ,
55+ enabled : ! isSearchMode ,
5456 retry : ( failureCount , error : AxiosError < ServerResponse < null > > ) => {
5557 if (
5658 error . response &&
5759 error . response . status === 401 &&
5860 ( error . response . data . code === 100 || error . response . data . code === 101 )
5961 ) {
60- console . log ( 'asdasd tj' ) ;
6162 return false ;
6263 }
6364
@@ -71,12 +72,14 @@ const TeamData = () => {
7172 }
7273
7374 const { data : searchData , isPending : searchPending } = useQuery ( {
74- queryKey : [ 'team-search' , keyword , page === - 1 ? 0 : page ] ,
75- queryFn : ( ) => searchTeams ( keyword , 'recent' , page === - 1 ? 0 : page , 6 ) ,
76- select : ( data ) => ( {
77- otherTeams : data . content ,
78- totalPages : data ?. page ?. totalPages ,
79- } ) ,
75+ queryKey : [ 'team-search' , keyword , page ] ,
76+ queryFn : ( ) => searchTeams ( keyword , 'recent' , page , 6 ) ,
77+ select : ( data ) => {
78+ return {
79+ otherTeams : data . content ,
80+ totalPages : data ?. page ?. totalPages ,
81+ } ;
82+ } ,
8083 enabled : isSearchMode ,
8184 } ) ;
8285
@@ -96,20 +99,13 @@ const TeamData = () => {
9699 ? ( searchData ?. otherTeams ?? [ ] )
97100 : ( queryData ?. otherTeams ?? [ ] ) ;
98101 const totalPages = isSearchMode
99- ? ( searchData ?. totalPages ??
100- ( totalPagesCacheMap . get ( SEARCH_MODE ) as number ) )
101- : ( queryData ?. totalPages ?? ( totalPagesCacheMap . get ( QUERY_MODE ) as number ) ) ;
102- const currPage =
103- page === - 1
104- ? ( prevPageCacheMap . get (
105- isSearchMode ? SEARCH_MODE : QUERY_MODE
106- ) as number )
107- : page ;
102+ ? ( searchData ?. totalPages ?? totalPagesCacheMap . get ( SEARCH_MODE ) ?? 1 )
103+ : ( queryData ?. totalPages ?? totalPagesCacheMap . get ( QUERY_MODE ) ?? 1 ) ;
108104 const isPending = isSearchMode ? searchPending : queryPending ;
109105
110106 return (
111107 < KeywordPageControlContext . Provider
112- value = { { keyword, setKeyword, setPage } }
108+ value = { { keyword, setKeyword : handleKeywordChange , setPage } }
113109 >
114110 { /* 나의 팀 */ }
115111 { myTeam . length > 0 && < MyTeamCard teams = { myTeam } /> }
@@ -118,7 +114,7 @@ const TeamData = () => {
118114 < Pagination
119115 totalPages = { totalPages }
120116 onPageChange = { handlePageChange }
121- currentPageProp = { currPage }
117+ currentPageProp = { page }
122118 hideShadow = { true }
123119 />
124120 < Spacer h = { 34 } />
0 commit comments