공청
개발하는 금융인
공청
전체 방문자
오늘
어제
  • 분류 전체보기 (102)
    • 개인적인 이야기 (27)
    • IT에 관한 글 (15)
    • 경제, 금융 (12)
    • Python (2)
    • Javascript (6)
    • golang (2)
    • 비전공자를 위한 IT 지식 (0)
    • SQL (SQLD,SQLP) (1)
    • React (Front-end) (29)
    • 정보처리기사 (0)
    • Typescript (4)
    • (study) 모던 자바스크립트 Deep Dive (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 미국주식
  • next.js
  • 프로그래밍
  • vscode
  • javascript
  • python
  • typescript
  • react-router
  • useref
  • 웹개발
  • approute
  • HTTP
  • 일기
  • sql
  • 기술스택
  • 조건부렌더링
  • 트래블월렛
  • ChatGPT
  • vite
  • Effective Typescript
  • 창업
  • 언섹시비즈니스
  • 인터넷
  • 짧은생각
  • Golang
  • go
  • react
  • WSGI
  • 트래블카드
  • Fira Code

최근 댓글

최근 글

티스토리

반응형
공청

개발하는 금융인

(React Router) 5. 중첩 라우팅
React (Front-end)

(React Router) 5. 중첩 라우팅

2022. 12. 31. 20:42

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

"블로그 내의 광고와 쿠팡 링크를 클릭해주시면 블로그 운영에 큰 힘이 됩니다."

반응형

 

이전 글: https://moneytech.kr/72

 

(React Router) 4. contact.jsx 생성과 라우팅

이전 글: https://moneytech.kr/71 (React Router) 3. global layout을 추가해보자 이전글: https://princox.tistory.com/70 1. Root Route 구현하기 src 폴더 내에 routes라는 폴더를 구현하고 그 안에 root.jsx 파일을 생성합니다.

moneytech.kr

 

1. 중첩 라우트의 목표

우리의 중첩 라우트라는 것은 루트 라우트 안에서 화면 라우팅이 되는 것이다.

contact route를 root route 내부의 자식으로 만들어 줍니다.

 

src/main.jsx

const router = createBrowserRouter([
  {
    path: "/",
    element: <Root />,
    errorElement: <ErrorPage />,
    children: [      // <---- 이 부분으로 작성
      {
        path: "contacts/:contactId",
        element: <Contact />,
      },
    ],
  },
]);

이 전에 있던 배열에서 요소를 제거하고 첫번째 요소에 맨 마지막에 children을 삽입합니다.

 

이렇게 바꾸면 원래 나오던 부분이 하얀색으로 나오면서 화면이 안나옵니다.

root route에 이제 저 부분의 자식으로 어떤 부분을 그리고 싶은지 명시해주어야 합니다.

 

우리는 이 때 <Outlet>을 사용합니다.

 

Outlet은 부모 라우트에게 어떤 자식 라우트를 그릴지 명시해주는 기능입니다.

https://reactrouter.com/en/main/components/outlet

 

Outlet v6.6.1

Type declarationinterface OutletProps { context?: unknown; } declare function Outlet( props: OutletProps ): React.ReactElement | null; An should be used in parent route elements to render their child route elements. This allows nested UI to show up when ch

reactrouter.com

 

 

2. <Outlet>과 자식라우트

src/routes/root.jsx에 가서 아래와 같이 파일을 수정합니다.

import { Outlet } from "react-router-dom";

export default function Root() {
  return (
    <>
      <div id="sidebar">
        <h1>React Router Contacts</h1>
        <div>
          <form id="search-form" role="search">
            <inputㅐ
              id="q"
              aria-label="Search contacts"
              placeholder="Search"
              type="search"
              name="q"
            />
            <div id="search-spinner" aria-hidden hidden={true} />
            <div className="sr-only" aria-live="polite"></div>
          </form>
          <form method="post">
            <button type="submit">New</button>
          </form>
        </div>
        <nav>
          <ul>
            <li>
              <a href={`contacts/1`}>Your Name</a>
            </li>
            <li>
              <a href={`contacts/2`}>Your Friend</a>
            </li>
          </ul>
        </nav>
      </div>
      <div id="detail">
        <Outlet />      <------- 이 부분을 추가
      </div>
    </>
  );
}

 

 

그럼 이제 아래와 같이 중첩된 형태로 나오게 된다. (전체 부모 내의 자식이 표기되는 것)

 

고양이 귀욥

 

반응형
    'React (Front-end)' 카테고리의 다른 글
    • 리액트를 공부하는 순서와 공부해야할 것들, 샘플 프로젝트 추천
    • React 프로젝트 시작하는 여러가지 방법
    • (React Router) 4. contact.jsx 생성과 라우팅
    • (React Router) 3. global layout을 추가해보자
    공청
    공청
    투자, 프로그래밍, IT에 대한 글을 씁니다.

    티스토리툴바