11import { useEffect , useState } from 'react' ;
2- import { useNavigate } from 'react-router-dom' ;
2+ import { Navigate , useNavigate } from 'react-router-dom' ;
3+ import ClipLoader from 'react-spinners/ClipLoader' ;
34
45import useGetCourse from '@/hooks/course/useGetCourse' ;
56
@@ -14,14 +15,14 @@ import useModalStore from '@/store/useModalStore';
1415
1516function FindDateCourse ( ) {
1617 const { openModal } = useModalStore ( ) ;
17- const [ current , setCurrent ] = useState ( 1 ) ;
18+ const [ current , setCurrent ] = useState ( 0 ) ;
1819 const navigate = useNavigate ( ) ;
1920 const { budget, datePlaces, dateDurationTime, startTime, mealTypes, transportation, userPreferredKeywords } = useFilterStore ( ) ;
2021 useEffect ( ( ) => {
2122 setCurrent ( 1 ) ;
2223 } , [ budget , datePlaces , dateDurationTime , startTime , mealTypes , transportation , userPreferredKeywords ] ) ;
2324
24- const { data : courseData } = useGetCourse ( {
25+ const { data, isLoading , error } = useGetCourse ( {
2526 page : current ,
2627 size : 5 ,
2728 budget,
@@ -34,6 +35,10 @@ function FindDateCourse() {
3435 isBookmarked : false ,
3536 } ) ;
3637
38+ if ( error ) {
39+ return < Navigate to = "/error" replace = { true } /> ;
40+ }
41+
3742 return (
3843 < div className = "w-full flex justify-center items-center flex-col h-fit" >
3944 < div className = "flex w-[1000px] max-w-[80vw] flex-col py-[24px] gap-[20px]" >
@@ -51,12 +56,20 @@ function FindDateCourse() {
5156 검색 필터
5257 </ div >
5358 </ div >
54- < div className = "flex flex-col gap-[24px] " >
55- { courseData ?. result . dateCourseList . map ( ( course ) => {
56- return < DateCourse key = { course . dateCourseId } { ...course } /> ;
57- } ) }
58- </ div >
59- < Navigator current = { current } end = { courseData ?. result . totalPages ! } onClick = { setCurrent } />
59+ { isLoading ? (
60+ < div className = "w-full justify-center flex" >
61+ < ClipLoader />
62+ </ div >
63+ ) : (
64+ < >
65+ < div className = "flex flex-col gap-[24px] " >
66+ { data ?. result ?. dateCourseList . map ( ( course , idx ) => {
67+ return < DateCourse key = { course . dateCourseId ?? idx } { ...course } /> ;
68+ } ) }
69+ </ div >
70+ < Navigator current = { current + 1 } end = { data ?. result ?. totalPages ! } onClick = { setCurrent } />
71+ </ >
72+ ) }
6073 </ div >
6174 </ div >
6275 </ div >
0 commit comments