본문 바로가기

React

React 기초2 라우터(Router)

 

 

  • 학습 내용

이번 시간에는 웹페이지의 작동방식인 SPA와 SPA를 활용한 화면 전환 방식인 Router에 대해서 학습하고자 한다. 

 

  • SPA(Single Page Application)

전통적인 웹사이트는 페이지 이동 시 매번 페이지 전체를 불러와야 했다. 그런데 웹사이트가 복잡해지면서 문제가 발생하기 시작했다. 왜냐하면 중복되는 요소들을 매번 불러오면서 서버와의 불 필요한 트래픽을 발생시켰고 이로 인해 사용자가 느린 페이지를 봐야 하는 비효율적인 방법이 되었기 때문이다. 그래서 업데이트에 필요한 데이터만 서버에서 전달받아 화면에 보여주는 방식이 개발되기 시작했고, 이 것이 SPA(Single Page Application)이다. SPA는 화면을 업데이트하기 위한 데이터만 서버에서 전달받고 브라우저에서 해당 부분만 업데이트하는 방식으로 작동한다. SPA의 장점으로 사용자 입장에서 현저히 빠른 속도의 화면을 제공할 수 있다. 그리고 서버 과부하 문제 역시 상당 부분 해소해주며, 전체 페이지를 렌더링 하지 않기 때문에 사용자에게 더욱 깔끔한 UX를 제공한다.

 그러나 이런 SPA에도 단점이 있는데 브라우저가 렌더링할 때 HTML 파일을 읽다가 script태그를 발견하면 JavaScript파일을 다운받고 실행하는 방식으로 한다. 그런데 보통 SPA의 경우 HTML은 거의 비어있고 JavaScript가 무겁다 이 때문에 JS파일을 기다리는 첫 로딩 화면의 시간이 길다. 또 검색 엔진과 같은 환경에서는 최적화가 좋지 못하다는 단점 역시 있다.

 

  • 라우팅(Routing)

라우팅(Routing)이란 경로에 따라 변경한다란 의미인데, 이것은 SPA환경에서 다른 주소에 따라 다른 뷰를 제공하는 과정을 말한다. 쉽게 말하면 주소에 따라 특정 컴포넌트를 업데이트하는 것이다. 이것을 사용하여 다양한 화면을 주소에 따라서 제공할 수 있다. 라우팅을 사용하기 위해서는 React Router라는 라이브러리를 사용해야 하는데, 설치하는 방법은 이러하다.

npm install react-router-dom

 

  •  React Router

좀 더 구체적으로 라우팅에 대해 살펴서 리액트 라우터의 주요 기능에 대해 알아보고자 한다. 리액트 라우터는 크게 3가지의 역할로 구분할 수 있다. 먼저 라우터 역할을 하는 BrowserRouter, 그리고 경로를 매칭해주는 Switch와 Route, 마지막으로 경로를 변경하는 역할을 하는 Link가 있다. 사용 방법은 상단에 import를 해서 할 수 있다. 라우터의 사용 예시는 이렇다.

 import { BrowerRouter, Switch, Route, Link } from "react-router-dom"
 
 <BrowserRouter>
    <div className="App">
      <header>
        <nav>
          <ul className="menu">
            <li>
              <Link to="/">
                <button>Home</button>
              </Link>
            </li>
            <li>
              <Link to="/mypage">  
                <button>MyPage</button>
              </Link>
            </li>
            <li>
              <Link to="/dashboard">
                <button>Dashboard</button>
              </Link>
            </li>
          </ul>
        </nav>
      </header>

	 <Switch>
        <Route path="/" exact component={Home} />
        <Route path="/mypage" component={MyPage} />
        <Route path="/dashboard" component={Dashboard} />
	 </Switch>
    </div>
 </BrowserRouter>

'React' 카테고리의 다른 글

useState 동기적으로 사용하기  (0) 2022.11.08
[React] 상태 관리  (0) 2021.12.08
React 컴포넌트 디자인  (0) 2021.11.25
React 기초3 state & props  (0) 2021.08.26
React 기초1  (0) 2021.08.13