[React] SPA, ROUTER
Categories: react
Tags: react, ๊ฐ๋ ์ ๋ฆฌ
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
React
React : ํ๋ก ํธ์ค๋ ๊ฐ๋ฐ์ ์ํ JavaScript ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
framework - library์ ์งํฉ์ฒด, ๊ฐ๋ฐ์๊ฐ ๋ญ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๊ฒ์ ์งํฉํด์ ๋ชจ์ ๋์ ๊ฒ.
๋ํ์ ์ธ framework - spring framework
react๋ framework๊ฐ ์๋, react๋ ๋ค๋ฅธ ๊ธฐ์ ๊ณผ ๊ฐ์ด ์ฐ๋๋ฐ ์ ์ฝ์ด ์์, ์ข ์์ฑ์ด ์๊ธฐ ๋๋ฌธ
React์ 3๊ฐ์ง ํน์ง
- ์ ์ธํ
- ์ปดํฌ๋ํธ๊ธฐ๋ฐ
- ๋ฒ์ฉ์ฑ - ๋ค์ํ ๊ณณ์์ ํ์ฉํ ์ ์์, ๋จ์ํ react๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๊ธฐ ๋๋ฌธ
์ ์ธํ (Declarative)
๋ฆฌ์กํธ๋ ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ์ํด HTML /CSS /JS ๋ก ๋๋ ์ ์ ๊ธฐ๋ณด๋ค
ํ๋์ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์์ฑํ ์ ์๊ฒ JSX๋ฅผ ํ์ฉํ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ์งํฅ
์ปดํฌ๋ํธ ๊ธฐ๋ฐ (Component -Baseed)โจโจโจ
-
๋ฆฌ์กํธ๋ ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์ฌ๋ฌ ์ข ๋ฅ์ ์ฝ๋๋ฅผ ๋ฌถ์ด๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ
- JSX ๋ฌธ๋ฒ ์์ฒด์์๋ ๋ฐ๋ณต๋ฌธ ๋ชป ์, ๋ฐ๋ณต๋ฌธ ์จ์ผ ํ๋ฉด ๋ฌด์กฐ๊ฑด map
- if๋ ์ฌ์ฉ ๋ชปํจ ์จ์ผ ํ๋ค๋ฉด ์ผํญ ์ฐ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
-
์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ฉด ์๋ก ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ ์์ฒด์ ์ง์คํ์ฌ ๊ฐ๋ฐํ ์ ์์
๋ฒ์ฉ์ฑ(Learn Once, write Anywhere)
- ๋ฆฌ์กํธ๋ JavaScript ํ๋ก์ ํธ ์ด๋์๋ ์ ์ฐํ๊ฒ ์ ์ฉํ ์ ์์
- Facebook์์ ๊ด๋ฆฌ๋์ด ์์ ์ ์ด๊ณ , ๊ฐ์ฅ ์ ๋ช ํ๋ฉฐ, ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ๋ ๊ฐ๋ฅ.
JSX(JavaScript Xml)
javascript๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ์ ์ ์์ง๋ง (์ค์ ๋ก ์ปดํ์ผ ์ํจ) JSX๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชป ์ฝ์, ์ปดํ์ผ์ด ํ์ , ์ปดํ์ผ ์ Babel์ ์ฌ์ฉ Bable์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ์ ์ ์๋ ์ธ์ด๋ก ๋ณ๊ฒฝํด์ฃผ๋ ์ญํ ์ ํจ.
JS๋ ํผ์ ์ฌ์ฉ ๋ชปํ๊ณ HTML์ด ๊ผญ ์์ด์ผ ํจ, HTML ํ๋จ์ ๋ ธ๋ ๋ฐ์ค๊ฐ JS์ ์ฐ๊ฒฐํด์ฃผ๋ ์ฝ๋
JSX๋ ๋ฐ๋ฒจ๋ก ์ปดํ์ผํ๋ฉด HTML๊ณผ JS๋ก ๋๋์ด์ง.
JSX ์ฌ์ฉ ์ด์
- ํ ๋์ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ๊ณผ ๋์์ธ
JSX ์ฌ์ฉ ์์
App.js ์ด ํ ๊ฐ์ JavaScript ํ์ผ ์์์ HTML๊ณผ JavaScript๋ก ๋๋์ด์ก๋ ๋ ๊ฐ์ง ์ผ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ์์
- js์ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด
- jsx์์๋ JS๋ฌธ๋ฒ ์ฌ์ฉ์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด์ผ ํจ.
JSX ํ์ฉ
- JSX ๊ท์น
-
ํ๋์ ์๋ฆฌ๋จผํธ ์์ ๋ชจ๋ ์๋ฆฌ๋จผํธ๊ฐ ํฌํจ.
-
์๋ฆฌ๋จผํธ ํด๋์ค ์ฌ์ฉ์ , className์ผ๋ก ํ์
- JavaScript ํํ์ ์ฌ์ฉ์ ์ค๊ดํธ ์ด์ฉ
-
์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ ๋๋ฌธ์๋ก ์์ (PascalCase)
-
์กฐ๊ฑด๋ถ ๋ ๋๋ง์๋ ์ผํญ์ฐ์ฐ์ ์ฌ์ฉ
- ์ฌ๋ฌ๊ฐ์ HTML ์๋ฆฌ๋จผํธ๋ฅผ ํ์ํ ๋ map() ํจ์๋ฅผ ์ด์ฉ
-
map์ ์ด์ฉํ ๋ฐ๋ณต
- ๋ธ๋ก๊ทธ๋ฅผ ์๋ก ๋ค ๋ ํฌ์คํธ๊ฐ 100๊ฐ์ด๊ณ ์์ฑ์๊ฐ ์์ฑํ ๋๋ง๋ค ๋ง๋ค ์ ์์โฆ
-
์ด๋ ๊ฒ ์ง์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋์ ์์ฑํ๋ ๊ฒ์ ํ๋์ฝ๋ฉ(hard coding)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
const posts = [ { id : 1, title : 'Hello World', content : 'Welcome to learning React!' }, { id : 2, title : 'Installation', content : 'You can install React via npm.' }, { id : 3, title : 'reusable component', content : 'render easy with reusable component.' }, // ... { id : 100, title : 'I just got hired!', content : 'OMG!' }, ]; function Blog() { return ( <div> <div> <h3>{posts[0].title}</h3> <p>{posts[0].content}</p> </div> <div> <h3>{posts[1].title}</h3> <p>{posts[1].content}</p> </div> {// ...} <div> <h3>{posts[99].title}</h3> <p>{posts[99].content}</p> </div> {// ... 98 * 4 more lines !!} </div> ); }
-
-
๊ทธ๋์ map์ ์ด์ฉํ์ฌ ๋ฐ๋ณต
1 2 3 4 5 6 7 8 9 10 11 12
function Blog() { const postToElement = (post) => ( <div> <h3>{post.title}</h3> <p>{post.content}</p> </div> ); const blogs = posts.map(postToElement); return <div className="post-wrapper">{blogs}</div>; }
- key ์์ฑ์ ์์น๋
map
๋ฉ์๋ ๋ด๋ถ์ ์๋ ์๋ฆฌ๋จผํธ ์ฆ, ์ฒซ ์๋ฆฌ๋จผํธ์ ๋ฃ๊ธฐ-
key ์์ผ๋ฉด ์๋ฌ ๋ฐ์
-
์๋์ ๊ฐ์ด key๋ฅผ ๋ฃ์ด ์ฃผ์ด์ผ ํจ. ์ ๊ณ ์ ํ id๊ฐ ์์ ๊ฒฝ์ฐ์๋ง ๋ฐฐ์ด ์ธ๋ฑ์ค ๋ฃ์ด์ ํด๊ฒฐ
1 2 3 4 5 6 7 8 9 10
function Blog() { // postToElement๋ผ๋ ํจ์๋ก ๋๋์ง ์๊ณ ์๋์ ๊ฐ์ด ์จ๋ ๋ฌด๋ฐฉ. const blogs = posts.map((post) => ( **<div key={post.id}>** <h3>{post.title}</h3> <p>{post.content}</p> </div> )); return <div className="post-wrapper">{blogs}</div>; }
-
- key ์์ฑ์ ์์น๋
Component
- ์ปดํฌ๋ํธ์ ์ ์
-
ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ ์ฌ๋ฌ ์ข ๋ฅ์ ์ฝ๋ ๋ฌถ์
-
-
์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค๊ณ ์กฐํฉํ๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค ์ ์์
- React DOM
- React application์ ์ปดํฌ๋ํธ๋ค์ ํธ๋ฆฌ๊ตฌ์กฐ๋ก ํ์ฑํํ์ฌ ํํํ ์ ์์
- ํธ๋ฆฌ๊ตฌ์กฐ = ๊ณ์ธตํ ๊ตฌ์กฐ
-
์ ํฌ๋ธ๋ฅผ ์ปดํฌ๋ํธ๋ก ์๊ฐํด๋ณด๊ธฐ
- ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๋ ๊ฐ์ ๊ณ ์ ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ UI์ ํ ๋ถ๋ถ์ ๋ด๋นํ๊ณ ์์.
- ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ํ ๊ณณ์ ๋ชจ์ ๋ณต์กํ UI๊ตฌ์ฑํ ์ ์๊ณ
- ๋ ๋์๊ฐ ์ต์ข ์ ์ผ๋ก ๋ณต์กํ ์ดํ๋ฆฌ์ผ์ด์ ๋ ๋ง๋ค ์ ์์.
-
์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ์ ์ฅ์
-
React ์์ ๋๋ ์ด๋ ๊ฒ ์์
-
React ๋ฅผ ์ฌ์ฉํ ๋๋ ๊ท๋ชจ๊ฐ ํฐ application์ ์์ ์ด๋ ๊ตฌ์กฐ ๊ฐ์ ์ด ๊ฐํธํด์ง.
-
Create React App - ํฐ๋ฏธ๋ ์ค์ต
Create React App์ ๋ฆฌ์กํธ SPA๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ ํ ์ ์๋๋ก ๋ง๋ค์ด์ง ํด ์ฒด์ธ
- ์ด๊ธฐ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ฒ ์ง์
- but, ์ต๊ทผ์ ์ ๋ฐ์ดํธ ์ง์์ ๋์ด์ ํ์ง ์๋๋ค๊ณ ํจ.
- ํฐ๋ฏธ๋์์ nmp ์ค์น
- npm install npx-g
- npx create-react-app react-random-proverb
- y
- code .
- ์ค์ต ์์ -๋ช
์ธ 10๊ฐ๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ ,๋๋ค์ผ๋ก ํ๋ฉด์์ ๋ช
์ธ์ด ํ์๋๊ฒ ํด๋ณด๊ธฐ
-
๋ด๊ฐ ๊ตฌํํ ๊ฒ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
function App() { const quotes = [ "์ธ์์ ์์ ์ ์ฐพ๋ ๊ฒ์ด ์๋๋ผ, ์์ ์ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค. - ์กฐ์ง ๋ฒ๋๋ ์ผ", "์ฑ๊ณต์ ์ฑ๊ณตํ๋ ค๋ ์์ง์์ ๋น๋กฏ๋๋ค. - ๋น์ค ๋กฌ๋ฐ๋ฅด๋", "๋ณํ๋ ๊ณ ํต์ค๋ฝ๋ค. ํ์ง๋ง ์๋ฌด๊ฒ๋ ๋ฐ๊พธ์ง ์๋ ๊ฒ์ ๋ ๊ณ ํต์ค๋ฝ๋ค. - ์กด ๋งฅ์ค์ฐ", "์์ ์ด ๋ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ฎ๊ฒ ์์ ์ ํ๊ฐํ์ง ๋ง๋ผ. - ๋ฏธ์ ธ ์ค๋ฐ๋ง", "์ฐ๋ฆฌ๋ ๊ณ์ํด์ ๋์๊ฐ๋ ๋ฒ์ ๋ฐฐ์ด๋ค. - ์ํธ ๋์ฆ๋", "๋ค๊ฐ ๋๋ ค์ํ๋ ์ผ์ ํด๋ผ. ๊ทธ๋ฆฌ๊ณ ๊ณ์ ๊ทธ๊ฒ์ ํด๋ผ. - ๋ํ ์๋ ์๋จธ์จ", "ํ๋ณต์ ๋ชฉ์ ์ง๊ฐ ์๋๋ผ ์ฌํ์ ๋ฐฉ๋ฒ์ด๋ค. - ๋ก์ด ๊ตฟ๋งจ", "์ฑ๊ณต์ ๋น๋ฐ์ ๊ทธ ๋น๋ฐ์ ์ฐพ๋ ๊ฒ์ด๋ค. - ํจ๋ฆฌ ํฌ๋", "๋งค์ผ ๋งค์ผ์ด ์ต๊ณ ์ ๋ ์ด๋ค. - ๋ํ ์๋ ์๋จธ์จ", "๋ถ๊ฐ๋ฅ์ ์คํํ๋ ๊ฒ์ ๊ทธ๊ฒ์ ๋ฏฟ๋ ์๋ค์ ์ํด ๋ฌ์ฑ๋๋ค. - ๋ํด๋ ์น ๋ณด๋ํ๋ฅดํธ" ]; const currentProverb = quotes[Math.floor(Math.random()*10+1)]; return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <p> {currentProverb} </p> <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" > Learn React </a> </header> </div> ); } export default App;
-
์์ธ์ฒ๋ฆฌ ์๋์ด์๊ณ , 1000๋ฒ ์คํ๋๋ 1๋ฒ์ ์ค๋ฅ๊ฐ ์๋ ์ฝ๋๊ฐ ์ค์, ๊ฒฐํจ ์ฅ์ ๊ฐ ์๋ ์ฝ๋๋ณด๋ค ์ฑ๋ฅ์ด ์ ์ข์๋ ์ค๋ฅ ์๋ ์ฝ๋๊ฐ ์ข์
1 2
let idx = Math.round(Math.random()*10+1) idx = idx === 10? 0 : idx;
- Math.random()์ 0์์ 1๊น์ง์ ๋์๋ฅผ ์ถ๋ ฅ
-
React SPA
SPA (Single-Page Application)
- ๋ฑ์ฅ ๋ฐฐ๊ฒฝ ๋ฐ ๊ฐ๋
- ์ ํต์ ์ธ ์น์ฌ์ดํธ๋ ํ์ด์ง ์ด๋ ์ ๋งค๋ฒ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ถ๋ฌ์์ผ ํจ.
- ์ ํต์ ์ธ ์น์ฌ์ดํธ์ ํ๊ณ์ ๋จ์
- ์ฌ์ฉ์์ ์๋น์ค ์ฌ์ด์ ์ํธ์์ฉ ์ฆ๊ฐ๋ ํธ๋ํฝ ์ฆ๊ฐ์ ๊ฒฝํ์ ์ ํ๋ฅผ ์ผ๊ธฐ
- ์ ํต์ ์ธ ์น์ฌ์ดํธ์ ํ๊ณ์ ๋จ์
- SPA ๋ฑ์ฅ
-
HTML๋ฌธ์ ์ ์ฒด๊ฐ ์๋๋ผ ์ ๋ฐ์ดํธ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์ JavaScript๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ฅํ์ฌ HTML์์๋ฅผ ์์ฑํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด ๊ฐ๋ฐ ๋จ.
-
SPA๋ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋ถ๋ถ๋ง ์๋ก ๋ถ๋ฌ์ด
-
- ์ ํต์ ์ธ ์น์ฌ์ดํธ๋ ํ์ด์ง ์ด๋ ์ ๋งค๋ฒ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ถ๋ฌ์์ผ ํจ.
- SPA๋
- ์๋ฒ๋ก๋ถํฐ ์์ ํ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ํ์ด์ง ๊ฐฑ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์ ๊ทธ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ์ ํ์ด์ง๋ฅผ ์ ๋ฐ์ดํธ ํจ์ผ๋ก์จ ์ฌ์ฉ์์ ์ํตํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ or ์น์ฌ์ดํธ
- SPA์ ์ฅ์
-
์ ์ฒด ํ์ด์ง๊ฐ ์๋๋ผ ํ์ํ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ง ๋ฐ์์ ํ๋ฉด์ ์ ๋ฐ์ดํธ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์ค Interaction์ ๋น ๋ฅด๊ฒ ๋ฐ์
- ์๋ฒ์์๋ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ง ๋๊ฒจ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ณผ๋ถํ ๋ฌธ์ ๊ฐ ํ์ ํ๊ฒ ์ค์ด๋ฌ
- ์ ์ฒด ํ์ด์ง๋ฅผ ๋ ๋๋ง ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์ ์ ๊ฒฝํ์ ์ ๊ณต ํจ.
-
- SPA์ ๋จ์
- JavaScript ํ์ผ์ ํฌ๊ธฐ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ผ๋ก ์ธํด ์ฒซ ํ๋ฉด ๋ก๋ฉ์๊ฐ์ด ๊ธธ์ด์ง
- ๊ฒ์์์ง ์ต์ ํ (SEO)๊ฐ ์ข์ง ์์
- ๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ ๊ฐ์ ๊ฒ์์์ง์ HTML ํ์ผ์ ์๋ ์๋ฃ๋ฅผ ๋ถ์ํ๋ ๋ฐฉ์์ผ๋ก ๊ฒ์๊ธฐ๋ฅ์ ๊ตฌ๋ํจ. ํ์ง๋ง SPA์ ๊ฒฝ์ฐ HTML ํ์ผ์ ๋ณ๋ค๋ฅธ ์๋ฃ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์์์ง์ด ์ ์ ํ ๋์ํ์ง ๋ชปํจ.
์ฐธ๊ณ ํ๊ธฐ
- REST, RESTfull - ์ฃผ๊ณ ๋ฐ์ ๋ ์ง์ผ์ผํ๋ ์์.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ถ๋ฆฌ,
- ๋ฐฑ์๋์์ ๋ณด๋ด์ฃผ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ด์จ
- ํ๋ก ํธ์์ ์ปดํฌ๋ํธ ๋ณ๊ฒฝ์ react์์ ํ๋ ๊ฒ,- ํ๋ก ํธ .๊ตฌ๋ถ๋์ด์ผ ํจ
์์ด์ด ํ๋ ์
-
Wireframe๊ณผ Mockup
- Wireframe
- ์นํ์ด์ง์ ๋ ์ด์์๊ณผ UI ์์ ๋ฑ์ ๋ํ ๋ผ๋
- Mockup โ ์๋ฏธ๋ ๊ผญ ๊ธฐ์ตํ๊ธฐ
- ๋ฐ๋ชจ ์์ฐ, ํ๊ฐ๋ฅผ ์ํ ์ต์ํ์ ๊ธฐ๋ฅ๋ง ๋ด์ ๋ชจํ
- Wireframe
-
ํ์ด์ง ๊ตฌ์ฑ
-
ํ์ด์ง ๋ง๋ค๊ธฐ ์ด์ ์, ์ปดํฌ๋ํธ ๋จผ์ ๋ง๋ค๊ณ ์กฐ๋ฆฝ
-
์ปดํฌ๋ํธ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ ํ์ด์ง์ ๊ฐ๋๋ผ๋ ํญ์ ํ๋ฉด ์๋จ์ ์์นํ๊ณ ์์. ๊ทธ๋ ๋ค๋ฉด ๋ชจ๋ ํ์ด์ง๋ง๋ค ๋ฐ๋ก ๋ง๋ค์ด ์ค ๊ฒ์ด ์๋๋ผ ํ๋ฒ๋ง ๋ง๋ค์ด์ ๋ชจ๋ ํ์ด์ง์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ก์ง์ ์ง๊ธฐ
-
ํ๊ฐ์ง ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ์ปจํ ์ธ ๋ฅผ ๊ณ์ ์ฌํ์ฉ ํจ.
-
๊ฐ์ฒด๋ฅผ ๋ฐ์์ ๋ฐฐ์ด๋ก ๋ฐ์ - ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์์ญ.
-
React Router
๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ์ ํ๋ฉด์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ผ์ฐํ ์ด๋ผ ํจ,
-
React Router ์ฃผ์ ์ปดํฌ๋ํธ
1
import{BrowserRouter, Routes, Route, Link}from "react-router-dom";
-
React Router ์ฌ์ฉ ํ๊ฒฝ Setting
-
react - router ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
1 2 3 4 5
#simpleroute ํด๋์ React App ์ค์น npx create-react-app simpleroute # react-router ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น npm install react-router-dom@^6.3.0
-
App.js๋ก react-router ์ปดํฌ๋ํธ ๊บผ๋ด์ค๊ธฐ
1
import{BrowserRouter, Routes, Route, Link}from "react-router-dom";
-
React Router ์ฌ์ฉ ํ๊ฒฝ ์ธํ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
import './App.css'; import { BrowserRouter, Routes,Route, Link} from 'react-router-dom'; export default function App(){ return ( <BrowserRouter> <div> <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">Home</Link> </li> <li> <Link to="/dashboard">Home</Link> </li> </ul> </nav> <Routes> <Route path ="/" element={<Home/>}/> <Route path ="/mypage" elemnet={<MyPage/>}/> <Route path ="/dashboard" element={<Dashboard/>}/> </Routes> </div> </BrowserRouter> ); } function Home(){ return <h1>Home</h1>; } function MyPage(){ return <h1>MyPage</h1>; } function Dashboard(){ return <h1>DashBoard</h1>; }
-
Leave a comment