11import { useState } from 'react' ;
2+ import { useNavigate } from 'react-router-dom' ;
23
34import * as styles from './Header.css' ;
45
5- const MENUS = [ '나의 할 일' , '나의 만다르트' , '나의 히스토리' ] ;
6+ import { PATH } from '@/route/path' ;
7+
8+ const MENUS = [
9+ { label : '나의 할 일' , path : PATH . TODO } ,
10+ { label : '나의 만다르트' , path : PATH . MANDAL } ,
11+ { label : '나의 히스토리' , path : PATH . HISTORY } ,
12+ ] ;
613
714const Header = ( ) => {
8- const [ activeMenu , setActiveMenu ] = useState < string > ( MENUS [ 0 ] ) ;
15+ const [ activeMenu , setActiveMenu ] = useState < string > ( MENUS [ 0 ] . label ) ;
916 const [ isLoggedIn , setIsLoggedIn ] = useState < boolean > ( false ) ;
17+ const navigate = useNavigate ( ) ;
1018
1119 const handleLogin = ( ) => {
1220 // 로그인 로직 추가하기
1321 setIsLoggedIn ( true ) ;
1422 } ;
1523
24+ const handleMenuClick = ( menuLabel : string , path : string ) => {
25+ setActiveMenu ( menuLabel ) ;
26+ navigate ( path ) ;
27+ } ;
28+
1629 return (
1730 < header className = { styles . header } >
1831 < div className = { styles . headerInner } >
@@ -21,12 +34,12 @@ const Header = () => {
2134 < nav className = { styles . navWrapper } >
2235 { MENUS . map ( ( menu ) => (
2336 < button
24- key = { menu }
25- className = { `${ styles . navItem } ${ activeMenu === menu ? styles . navItemActive : '' } ` }
26- onClick = { ( ) => setActiveMenu ( menu ) }
27- aria-current = { activeMenu === menu ? 'page' : undefined }
37+ key = { menu . label }
38+ className = { `${ styles . navItem } ${ activeMenu === menu . label ? styles . navItemActive : '' } ` }
39+ onClick = { ( ) => handleMenuClick ( menu . label , menu . path ) }
40+ aria-current = { activeMenu === menu . label ? 'page' : undefined }
2841 >
29- { menu }
42+ { menu . label }
3043 </ button >
3144 ) ) }
3245 </ nav >
0 commit comments