.env
파일 생성Node_PATH=src
본 이유는 나중에,, 항상 이렇게 프로젝트를 셋업한뒤 시작한다고 한다.
$ npm add prop-types
or
$ yarn add prop-types
components 폴더를 생성해서 App.js 파일을 components폴더로 옮긴다. 이때 index.js에서 App.js 파일 경로가 달라졌기 때문에 에러가 날 것이다.
// index.js
import App from 'components/App.js'
파일 경로를 위와 같이 바꿔주자.
원래는 ./'components/App.js'
와 같이 처리해줬는데 ./
를 생략해도 되는 이유는 첫 셋업때 .env
파일에 설정값을 줬기 때문
NODE_PATH=src
은 파일경로가 기본적으로 src파일을 보도록 한다는 뜻이다.
❌ 이때 .env
파일 설정값을 줬음에도 에러가 발생한다
따로 jsconfig.json
파일을 생성해서
{
"compilerOptions": {
"baseUrl": "src"
}
}
컴파일 옵션을 줬더니 해결이 되었다.
$ npm i react-router-dom
// Router.js
<Router>
<Route path="/" exact component={Home}/>
<Route path="/tv" component={TV}/>
<Route path="/search" component={Search}/>
</Router>
<Route>
는 꼭 <Router>
안에 위치되어 있어야 한다.
- Components
- App.js
- Router.js
- Routes
- Home.js
- TV.js
- Search.js
- Detail.js
App.js
import React, { Component,Fragment } from 'react';
import Router from 'Components/Router'
class App extends Component {
render() {
return (
<>
<Router/>
</>
);
}
}
export default App;
Router.js
export default () => (
<Router>
<Route path="/" exact component={Home}/>
<Route path="/tv" component={TV}/>
<Route path="/search" component={Search}/>
</Router>
)
Hash Router
#
가 들어가지만 간단한 라우터BrowserRouter
-실제로 브라우저처럼 보여준다.
둘 중 원하는 것 선택하면 된다. 기능은 같다
Composition
은 두개 이상의 Route를 동시에 렌더링하는 방식
<Route path="/tv" component={TV}/>
<Route path="/tv/popular" render={ ()=> <h1>Popular</h1> } />
tv라우터와 popular라우터가 동시에 렌더된다.
이렇게 두가지의 Route를 렌더링하고 싶을때 사용한다.
<Redirect from="*" to="/" />
일치하는 페이지가 없을 경우에 to
로 리다이렉트해주기 위한 동작
Switch
한번에 오직 하나의 Route만 렌더링하도록 한다.
<Router>
<Switch>
<Route path="/" exact component={Home}/>
<Route path="/tv" exact component={TV}/>
<Route path="/tv/popular" render={()=> <h1>Popular</h1>} />
<Route path="/search" component={Search}/>
<Redirect from="*" to="/" />
</Switch>
</Router>