Zoeeey
Stack flows in you
Zoeeey
  • 분류 전체보기 (155)
    • 💡 UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • 🟨 JavaScript (66)
      • 개념 (42)
      • 정리 (2)
      • 문제풀기 (프로그래머스, 코딩애플) (15)
      • 응용하여 자동화or문제해결하기 (2)
      • 기타 (5)
    • ⚛️ React (49)
      • 개념 (27)
      • 개념(Redux) (3)
      • 정리 (4)
      • 문제풀기 (코딩애플: React) (15)
    • 📘 TypeScript (10)
      • 개념 (8)
      • 문제풀기 (코딩애플) (2)
    • 🌐 HTML,CSS (18)
      • 실무에서 자주 발생한 오류들 (10)
      • 뒤늦게 알아서 뼈아픈 유용한 CSS (6)
      • 기타 자주 쓰는 CSS (2)
    • 💻 CS (8)
      • CS (5)
      • 정규표현식 (2)
      • Git,Github (1)

태그

  • Props
  • object
  • useEffect
  • CS
  • Ajax
  • state
  • axios
  • json
  • UXUI
  • 오류
  • react
  • redux
  • TypeScript
  • JavaScript
  • 삼항연산자
  • 프로그래머스
  • class
  • CSS
  • array
  • 코딩애플
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
Zoeeey

Stack flows in you

⚛️ React/개념

React : 리액트 라우터 (navigate, 404페이지, nested routes, outlet)

2023. 5. 19. 12:24

navigate

navigate 사용하는 법

1. react-router-dom에 import한다.

import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom';

2. 변수에 함수를 할당하고 원하는 위치에 onClick 이벤트로 걸어둔다.

function App() {
  let navigate = useNavigate()
  
  return (
    <div className="App">
      <Nav.Link onClick={ ()=>{ navigate('/cart') } }>장바구니</Nav.Link>
      <Nav.Link onClick={ ()=>{ navigate('/detail') } }>상세보기</Nav.Link>
    </div>
  );
}

재밌는 기능

navigate 안에 -1을 넣으면 뒤로가기, 2를 넣으면 앞으로 두번 가기 이런 기능들이 있다고 한다.

<Nav.Link onClick={ ()=>{ navigate('-1') } }>뒤로가기</Nav.Link>
<Nav.Link onClick={ ()=>{ navigate('1') } }>앞으로가기</Nav.Link>

404페이지 만들기

사람들이 하위폴더에 오타를 낸다거나 하는 식으로 잘못된 경로로 접근했을 때 띄우는 잘못된 페이지임을 표시하는 페이지를 만들 수 있다.

Route path에 *를 넣으면 된다. 이는 이외의 모든 페이지를 의미한다.

<Routes>
  <Route path="/" element={ <Main shoes={shoes}/> }/>
  <Route path="/cart" element={<div>상세페이지 내용1</div>} />
  <Route path="*" element={ <div>저런! 존재하지 않는 페이지입니다.</div> }/>
</Routes>

nested routes

Route 안에 Route를 넣으면 서브경로를 만들어 페이지들을 만들 수 있다.

<Route path="/about" element={ <About /> }>
  <Route path="member" element={<div>2depth페이지 내용1</div>} />
  <Route path="location" element={<div>2depth페이지 내용2</div>} />
</Route>

/about/member으로 들어가면 <About />과 <div>2depth페이지 내용1</div>, 그러니까 부모Route와 해당 자식 Route의 내용을 같이 보여준다.
그래서 부모Route의 내용 컴포넌트 안에 자식 Route의 내용을 어디에 보여줄지 표기해야 한다.

Outlet

Outlet은 위 상황에서 자식 Route의 내용을 어디에 보여줄지 표기할 수 있다.

function About(){
  return (
    <>
    <div className="mt_30">우리 회사는 이런 곳이에요</div>
    <Outlet></Outlet>
    </>
  )
}

어떨 때 쓸까?

내용이 살짝살짝 바뀌는 유사한 페이지들이 필요할 때 쓴다.


출처 : 코딩애플 https://codingapple.com/

저작자표시 비영리 동일조건 (새창열림)

'⚛️ React > 개념' 카테고리의 다른 글

React : styled-components (설치 , 사용, 장단점), css파일 js에 종속시키기  (1) 2023.05.22
React : URL 파라미터 (useParams)  (0) 2023.05.22
React : 리액트 라우터 (설치, 세팅, 이동버튼) 및 외부라이브러리 사용법  (0) 2023.05.18
React : 다른 파일의 데이터 바인딩하기 (import, export)  (0) 2023.05.17
React : 프로젝트생성/bootstrap 연결/이미지경로 연결/public폴더  (0) 2023.05.17
    '⚛️ React/개념' 카테고리의 다른 글
    • React : styled-components (설치 , 사용, 장단점), css파일 js에 종속시키기
    • React : URL 파라미터 (useParams)
    • React : 리액트 라우터 (설치, 세팅, 이동버튼) 및 외부라이브러리 사용법
    • React : 다른 파일의 데이터 바인딩하기 (import, export)
    Zoeeey
    Zoeeey
    길게 생각하고 짧게 그리기

    티스토리툴바