Create Containers
현재 우리 앱에는 콘텐츠를 렌더링하는 컴포넌트가 하나 있습니다. 노트 작성 앱을 만들려면 노트에 대한 불러오기/수정/작성을 위해 몇 개의 다른 페이지들을 만들어야합니다. 이를 수행하기 전에 앱의 외부 컨텐트를 구성 요소 안에 모두 넣고 내부의 모든 최상위 구성 요소를 렌더링합니다. 다양한 페이지를 나타내는 이러한 최상위 구성 요소를 컨테이너라고합니다.
탐색 바 추가하기
먼저 탐색 바를 추가하여 애플리케이션의 외부 컨텐트를 만들어 보겠습니다. 여기서 Navbar React-Bootstrap 구성 요소를 사용하겠습니다.
시작하려면, Create React App에 원래 있던 src/logo.svg
를 제거합니다.
$ rm src/logo.svg
그리고 src/App.js
에서도 코드를 제거합니다. 그리고 아래 내용으로 대체합니다.
import React, { Component } from "react";
import { Link } from "react-router-dom";
import { Navbar } from "react-bootstrap";
import "./App.css";
class App extends Component {
render() {
return (
<div className="App container">
<Navbar fluid collapseOnSelect>
<Navbar.Header>
<Navbar.Brand>
<Link to="/">Scratch</Link>
</Navbar.Brand>
<Navbar.Toggle />
</Navbar.Header>
</Navbar>
</div>
);
}
}
export default App;
여기에 아래와 같이 몇 가지를 더 수정했습니다.
div.container
에 Bootstrap을 사용하여 고정 너비 컨테이너 생성하기.fluid
속성을 사용하여 컨테이너 너비에 맞는 탐색 바를 내부에 추가합니다.- React-Router의
Link
컴포넌트를 사용하여 앱의 홈페이지 링크를 처리하십시오 (페이지를 새로 고치지 않아도됩니다).
또한 몇 줄의 스타일을 추가하여 좀 더 공간을 넓힙니다.
src/App.css
안에 모든 코드를 제거하고 아래 내용으로 바꿉니다:
.App {
margin-top: 15px;
}
.App .navbar-brand {
font-weight: bold;
}
Home 컨테이너 추가하기
이제 외부 컨텐트를 넣기 위한 준비가 되었으므로 홈페이지에 컨테이너를 추가해 봅시다. 홈페이지 컨테이너를 추가하면 /
경로에 응답합니다.
작업 디렉토리에 아래 명령을 실행해서 src/containers/
디렉터리를 만듭니다.
$ mkdir src/containers/
최상위 레벨의 모든 구성 요소를 여기에 저장합니다. 이는 단일 페이지 앱의 경로에 응답하고 API 요청을 처리할 구성 요소들입니다. 이 자습서의 나머지 부분에서는 이들을 컨테이너라고 부르겠습니다.
새로운 컨테이너를 생성하기 위해 아래 코드를 새로 만든 파일인 src/containers/Home.js
에 추가합니다.
import React, { Component } from "react";
import "./Home.css";
export default class Home extends Component {
render() {
return (
<div className="Home">
<div className="lander">
<h1>Scratch</h1>
<p>A simple note taking app</p>
</div>
</div>
);
}
}
사용자가 현재 로그인되어 있지 않다면 바로 이 홈페이지를 렌더링합니다.
이제 스타일을 지정하기 위해 몇 줄을 추가해 보겠습니다.
src/containers/Home.css
에 아래 내용을 추가합니다.
.Home .lander {
padding: 80px 0;
text-align: center;
}
.Home .lander h1 {
font-family: "Open Sans", sans-serif;
font-weight: 600;
}
.Home .lander p {
color: #999;
}
라우트 설정하기
이제 /
에 응답하는 컨테이너를 위해 경로를 설정하겠습니다.
src/Routes.js
를 만들고 아래 내용을 작성합니다.
import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from "./containers/Home";
export default () =>
<Switch>
<Route path="/" exact component={Home} />
</Switch>;
이 구성 요소는 React-Router의 Switch
컴포넌트를 사용하여 그 안에 정의 된 첫 번째로 일치하는 경로를 렌더링합니다. 지금은 단 하나의 경로만을 가지고 있습니다. /
를 찾아서 일치 할 때 Home
컴포넌트를 렌더링합니다. 그리고 exact
속성을 사용하여 /
경로와 정확히 일치하는지 확인합니다. /
경로는 /
로 시작하는 다른 경로와도 일치하기 때문입니다.
경로 렌더링하기
이제 경로를 App 구성 요소로 렌더링 해 봅시다.
src/App.js
의 헤더 부분에 아래 내용을 추가합니다.
import Routes from "./Routes";
그리고 src/App.js
의 render
내부에 있는 Navbar
컴포넌트 아래에 다음 내용을 추가합니다.
<Routes />
그래서 src/App.js
의 render
메소드는 다음과 같이 보일 것입니다.
render() {
return (
<div className="App container">
<Navbar fluid collapseOnSelect>
<Navbar.Header>
<Navbar.Brand>
<Link to="/">Scratch</Link>
</Navbar.Brand>
<Navbar.Toggle />
</Navbar.Header>
</Navbar>
<Routes />
</div>
);
}
이렇게하면 앱의 다른 경로를 탐색할 때 탐색 표시 줄 아랫 부분이 변경되어 해당 경로가 반영됩니다.
마지막으로 브라우저로 가서 앱의 새로운 홈페이지가 표시되는지 확인합니다.
다음으로 탐색 바에 로그인과 가입 링크를 추가하겠습니다.
For help and discussion
Comments on this chapterIf you liked this post, please subscribe to our newsletter, give us a star on GitHub, and follow us on Twitter.