본문 바로가기
Front-End/React

[React] 서브라우트

by 민바이민 2021. 6. 3.

 

서브 라우트는, 라우트 내부의 라우트를 만드는것을 의미합니다. 컴포넌트를 만들어서 그 안에 또 Route 컴포넌트를 렌더링하시면 됩니다.

서브 라우트 만들어보기

한번 Profiles 라는 컴포넌트를 만들어서, 그 안에 각 유저들의 프로필 링크들과 프로필 라우트를 함께 렌더링해보겠습니다.

 

src/Profiles.js

import React from "react";
import Profile from "./Profile";
import { Link, Route } from "react-router-dom";

function Profiles() {
  return (
    <div>
      <h3>사용자 목록</h3>
      <ul>
        <li>
          <Link to="/profiles/meanbymin">meanbymin</Link>
        </li>
        <li>
          <Link to="/profiles/homer">homer</Link>
        </li>
      </ul>

      <Route
        exact
        path="/profiles"
        render={() => <div>사용자를 선택해주세요</div>}
      />
      <Route path="/profiles/:username" component={Profile} />
    </div>
  );
}

export default Profiles;

위 코드에서 첫번째 Route 컴포넌트에서는 component 대신에 render 가 사용되었는데요, 여기서는 컴포넌트가 아니라, JSX 자체를 렌더링 할 수 있습니다. JSX 를 렌더링하는 것이기에, 상위 영역에서 props 나 기타 값들을 필요하면 전달 해 줄 수있습니다.

그 다음, App 에서 Profiles 를 위한 링크와 라우트를 생성해주겠습니다 (기존 Profiles 라우트는 제거합니다.)

src/Profile.js

import React from "react";

const profileData = {
  meanbymin: {
    name: "오석민",
    description: "Frontend Engineer",
  },
};

function Profile({ match }) {
  const { username } = match.params;
  const profile = profileData[username];

  if (!profile) return <div>존재하지 않는 사용자입니다.</div>;
  return (
    <div>
      <h3>
        {username} ({profile.name})
      </h3>
      <p>{profile.description}</p>
    </div>
  );
}

export default Profile;

 

이렇게하면 '사용자를 선택해주세요' 라고 렌더링 하는 부분에 컴포넌트를 가져와서 사용할 수 있는 장점들이 생깁니다.

 

 이렇게 서브라우트는 서비스에서 특정 라우트 내에 탭 기능을 만들게 될 때 많이 사용하게 되는데요, 단순히 state로 관리하는 것 보다 서브 라우트로 관리하는 것을 좋습니다. setState 같은것을 할 필요도 없고, 링크를 통하여 다른 곳에서 쉽게 진입시킬 수 있고, 검색엔진 크롤링까지 고려한다면, 검색엔진 봇이 더욱 다양한 데이터를 수집해 갈 수 있기 때문입니다.

'Front-End > React' 카테고리의 다른 글

[React] react-route-dom withRouter  (2) 2021.06.04
[React] react-route-dom history  (0) 2021.06.03
[React] Router에서 파라미터와 쿼리  (0) 2021.06.03
[React] Route 라우터  (0) 2021.06.03
[React] react-async 라이브러리  (0) 2021.06.01

댓글