react ๋ฅผ ์ด์ฉํ์ฌ navigation bar๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด๋ณด์
navigation bar๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด์ reactd์์๋ ํ์ด์ง ๊ฐ์ data๋ฅผ ์ด๋ป๊ฒ ์ฐ๊ฒฐํ๊ณ ๊ณต์ ํ๋์ง ๊ณต๋ถํด ๋ณผ ๊ฒ์ด๋ค.
1) react-router-dom ์ค์น
* npm ์ผ๋ก ์ค์น
npm install react-router-dom
* yarn ์ผ๋ก ์ค์น
yarn add react-router-dom
2) Routes ํด๋ ์์ฑ
routes ํด๋์๋ ๋ด๊ฐ ๋ง๋ค๊ณ ์ถ์(์ด๋ํ ) ํ์ด์ง ๊ฐ์๋งํผ ๋ง๋ ๋ค
routes์ 3๊ฐ์ ํ์ด์ง ์์ฑ
- Home.js : ๋ฉ์ธ ์ํ์ค๋ช (์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง )
- About.js : ์นํ์ด์ง ์๊ฐ๊ธ (์๊ธฐ์๊ฐ ๋ฃ์ ์์ )
- Datail.js : ์ํ ์์ธ ์ค๋ช (์ํ ํด๋ฆญ์ ์์ธ์ค๋ช ํ์ด์ง)
์ผ๋จ ํ์ฌ๋
APP.js์์ Movies๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ์ฑํ๋ ์ผ์ ์ ๋ถ ํ๋ ์ํฉ
APP.js ์์ getMovie ๋ก ๊ฐ์ ธ์์ ์ ๋ถ ๋ค ๊ตฌํํ๋ ๋ฐฉ์์
getMovie -> routesํ์ผ๋ก ๋๋ ์๊ตฌํํ ์์
๋ผ์ฐํฐ
url์ ์ด์ฉํ์ฌ path๋ฅผ ์ง์ ํ ์ ์์
url์ ๋งค์นํ๋ฉฐ ํด๋นํ๋ ๋ผ์ฐํฐ๋ฅผ ๊ฐ์ ธ์ ๋ณด์ฌ์ค๋ค
ex)
/home/
/home/introduction
์ด๋ ๊ฒ 2๊ฐ์ ๋ผ์ฐํฐ๊ฐ ์์ผ๋ฉด 2 ๋ผ์ฐํฐ๋ฅผ ๋ค ๋ ๋๋ง ํ๊ธฐ๋๋ฌธ์
ํ ํ์ด์ง์์ ๋๊ฐ๊ฐ ๊ฒน์ณ ๋ณด์ด๊ฒ ๋๋ค.(2๊ฐ์ component๋ฅผ ๋ณด์ฌ์ค)
/home/ : /home/ ๊ณผ /home/introduction์ด ๊ณต์กด
/home/introduction : /home/introdunction/ ๋ง ๋ ๋๋ง
exact ์ด์ฉํ๊ธฐ
exact ={true}๋ฅผ ๋ฃ๊ฒ ๋๋ฉด path๊ฐ ์ค์ง "/"์ผ๋๋ง ๋์ํ๋๋ก ์คํ๋จ
import React from "react";
import { HashRouter ,Route} from "react-router-dom";
import Home from "./routes/Home";
import About from "./routes/About";
function App() {
return (
<HashRouter>
<Route path="/" exact={true} component={Home} />
<Route path="/about" component={About} />
</HashRouter>
);
}
export default App;
Props
๋ชจ๋ Route ์์ ์๋ ๋ผ์ฐํธ๋ค์ ๊ธฐ๋ณธ props ๊ฐ์ ๊ฐ์ง
Ex)
์ฌ๊ธฐ์๋ Home, About, Detail ์์
props ๊ฐ์ ์ด์ฉํ๊ณ ์ฌ์ฉํ ์ ์์
Link
React์์๋ ๋งํฌ๋ฅผ ๊ฑธ์ด์ค๋ <a> tage ๋์ <Link>๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
a tag๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋งํฌ๋ฅผ ๋๋ฅผ๋๋ง๋ค ์ฌ ๋ ๋๋ง ๋๊ธฐ ๋๋ฌธ์ ์นํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
<Link> ๋ ๋งํฌ๋ฅผ ์ฐ๊ฒฐ์์ผ์ค ๋ฟ ์๋๋ผ object ์ ๋ฌ์ด ๊ฐ๋ฅํจ
<Link to={{
pathname: `/movie/${id}`,
state: {
year:year,
title:title,
summary:summary,
poster:poster,
genres:genres
}
}}>
์ด๋ฐ์์ผ๋ก path ์ state๋ฅผ ์ง์ ํ์ฌ ๋งํฌ์ฐ๊ฒฐ, ์์ฑ(props) ์ผ๋ก ์ ๋ฌ
์ ๋ฌํ ์์ฑ(props)๋ฅผ ๋ฐ์ ์ํ๋๋๋ก render ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
class Detail extends React.Component{
componentDidMount() {
const { location,history } = this.props;
if (location.state === undefined) {
history.push("/");
}
}
render() {
console.log(this.props);
const { location } = this.props;
if (location.state) {
return (
<div className="detail__container">
<h1>๐ Movie details</h1>
<span>{location.state.title}</span>
<span>{location.state.summary}</span>
</div>
);
}
else {
return null;
}
}
}
'๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ReactHooks ์ ๋ณตํ๊ธฐ 1ํ ( useState, useClick ) (0) | 2021.04.06 |
---|---|
[React] ๋ฆฌ์กํธ์ Hooks ์์ ๋ก ์ ๋ณตํ๊ธฐ (0) | 2021.03.18 |
[React] ํ๋ก์ ํธ GitHub Pages ๋ฐฐํฌํ๊ธฐ + Axios ๋ฅผํตํด json data ๊ฐ์ ธ์ค๊ธฐ (2) | 2021.03.17 |
[React] setState and Lifecycle (0) | 2021.03.16 |
[ React ] JSX ์ดํดํ๊ธฐ & Proptypes (0) | 2021.03.16 |
๋๊ธ