Post

리액트를 다루는 기술 : 리액트 라우터로 SPA 개발하기

Route 컴포넌트로 특정 주소에 컴포넌트 연결

Route라는 컴포넌트를 사용하면 어떤 규칠을 가진 경로에 어떤 컴포넌트를 보여줄 지 정의할 수 있습니다.

/ 경로를 사용하는 Route에 exact라는 props를 설정하지 않으면 /about 경로가 / 규칙에도 일치하기 때문에 두 컴포넌트가 모두 나타나게 됩니다.

1
2
<Route path="/" component={Home} exact/>
<Route path="/about" component={About}/>

Link 컴포넌트는 클릭하면 다른 주소로 이동시켜 주는 컴포넌트입니다.

일반 웹 애프리케이션에서는 a 태그를 사용하여 페이지를 전환하지만, 리액트 라우터를 사용할 때는 a 태그를 사용하여 페이지를 전환하면 컴포넌트들이 리렌더링 되기 때문에 Link 컴포넌트를 사용해야 합니다.

1
2
<Link to="/"></Link>
<Link to="/about">소개</Link>

Route 하나에 여러 개의 path 설정하기

path props를 배열로 설정해 주면 여러 경로에서 같은 컴포넌트를 보여줄 수 있습니다.

1
<Route path={['/about', '/info']} component={About}>

Switch

Switch 컴포넌트는 여러 Route를 감싸서 그중 일치하는 단 하나의 라우트만을 렌더링시켜 줍니다.

Switch를 사용하면 모든 규칙과 일치하지 않을 때 보여 줄 Not Found 페이지도 구현할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Switch>
  <Route path="/" component={Home} exact />
  <Route path={["/about", "/info"]} component={About} />
  <Route path="/profiles" component={Profiles} />
  <Route
    // path를 따로 정의하지 않으면 모든 상황에 렌더링됨
    render={({ location }) => (
      <div>
        <h2> 페이지는 존재하지 않습니다.</h2>
        <p>{location.pathname}</p>
      </div>
    )}
  />
</Switch>
This post is licensed under CC BY 4.0 by the author.