-
로그인페이지에 헤더 안보이게 하기 (with. useLocation)프론트엔드 개발자가 될거야./react 2023. 2. 4. 15:40
로그인 페이지나 회원가입 페이지에만 헤더를 안보이게 해야하는 경우가 있다.
이미 Router에서 Header가 모든 페이지에 보이게 해두었는데 이런경우에는 어떻게 해야할까?
나는 react-router-dom의 useLocation으로 구현했다.
구현기
1. Router.tsx
function Router() { return ( <BrowserRouter> <Header /> <Routes> <Route path="/home" element={<Home />} /> <Route path="/prac" element={<PracPage />} /> <Route path="/login" element={<LoginPage />} /> </Routes> </BrowserRouter> ); }
예를들어 Router의 구조가 이렇게 되어있다고 하자.
Header는 모든 페이지에서 보여질 것이다.
Header.tsx
import React, { useEffect, useState } from "react"; import { useLocation } from "react-router-dom"; function Header() { const location = useLocation(); const [isLoginPage, setIsLoginPage] = useState(true); useEffect(() => { location.pathname === "/login" ? setIsLoginPage(true) : setIsLoginPage(false); }, [location.pathname, setIsLoginPage]); if (isLoginPage) return null; return ( <NavContainer> <Nav> .... </Nav> </NavContainer> ); } export default Header;
useState와 useEffect, useLocation으로 구현할 수 있었다.
만약 location.pathname === "/login" 이면 (즉, 로그인페이지면)
Header 컴포넌트는 null로 리턴이될 것이고
로그인페이지가 아니면
Header 컴포넌트는 잘 보여질 것이다 : )
'프론트엔드 개발자가 될거야. > react' 카테고리의 다른 글
[이미지 업로드, 이미지 프리뷰] FileReader객체란? reader.onload 함수란? (feat. chatGPT 너 진짜 똑똑하다..) (2) 2023.02.16 [react] react-router-dom Outlet으로 Tab메뉴 구현하기 (0) 2023.02.08 [MUI Table 커스텀하기] React, Styled-Componet, Material-UI, TypeScript에서 테이블 커스텀하기 (0) 2023.02.04 [react-query] react-query는 왜 써야할까? (0) 2023.01.24 [react-query] 어드민 페이지 조회기능 react-query 도입하기 (0) 2023.01.24