login.html
, main.html
- 페이지 수만큼 html 파일이 존재.html
파일의 개수는? 1개 >>> SPA(Single Page Application)html
) 안에서 여러 개의 페이지를 보여주는 방법은? >>> Routing
라우팅(Routing)
이란 다른 경로(주소)에 따라 다른 View(화면)를 보여주는 것 이다.React-router
는 리액트의 라우팅 기능을 위해 가장 많이 사용 되는 라이브러리이다. Create React App(CRA)에 특별히 routing을 위한 로직이 들어있지 않기 때문에, 가장 인기 있는 routing solution인 react-router
를 추가해서 routing을 구현하도록 한다.
<App />
컴포넌트가 보여지고 있다. (또는 Login 컴포넌트, Main 컴포넌트)index.js
를 수정해야 한다.<App />
컴포넌트 대신에 routing을 설정한 컴포넌트(<Routes />
)로 변경해야한다.Route 이동하는 방법은 두 가지가 있다.
Routes.js
에서 설정한 path로 이동하는 첫 번째 방법은 <Link>
컴포넌트를 사용하는 방법이다.react-router-dom
에서 제공하는 <Link>
컴포넌트는 DOM에서 <a>
로 변환(Compile) 된다.<a>
태그와 마찬가지로 <Link>
태그도 지정한 경로로 바로 이동시켜주는 기능을 한다.<a>
- 외부 사이트로 이동하는 경우
<Link>
- 프로젝트 내에서 페이지 전환하는 경우
<Link />
를 사용하지 않고 요소에 onClick 이벤트를 통해 페이지를 이동하는 방법도 있다.goToMain
라는 event handler에서 구현한 것처럼 props 객체의 history (this.props.history
) 에 접근해서 이동할 수 있다.console.log
로 this.props.history
에 어떤 정보들이 담겨 있는지 한 번 확인해보자.history
의 push
메서드의 인자로 Routes.js
에서 설정한 path를 넘겨주면, 해당 라우트로 이동할 수 있다.history
)를 받으려면 export하는 컴포넌트에 withRouter
로 감싸주어야 한다.withRouter
와 같이 해당 컴포넌트를 감싸주는 것을 Higher Order Component (이하 HOC) 라고 한다.< Link >
withRouterHOC