TIL - 21.07.11 ๐จโ๐ป - React
TIL - 21.07.11 ๐จโ๐ป
React Router DOM ์ถ๊ฐ
Route ์ปดํฌ๋ํธ
๋ผ์ฐํธ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ ๋ <Route path='/:key'>
์ ๊ฐ์ด ์ฝ๋ก ์ ์ด์ฉํ ์ ์๋ค.
์ฝ๋ก ์ ์ด์ฉํ๋ฉด key ์๋ฆฌ์ ๋ค์ด๊ฐ ๊ฐ์ '/' ํ์ด์ง์์ ๋ฐ์์ฌ ์ ์๋ค.
์๋ฃํ์ ๊ฐ์ฒดํ์ผ๋ก ๋ฐ์์ค๋ฉฐ React Route Dom์ useParams
์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ก ์ฌ์ฉํ ์ ์๊ฒ๋๋ค.
let Comp = () => {
let Hello = () => {
return ( <h2>`${useParams().anykey}`</h2>
)
}
return (
<div>
<BrowserRoute>
<h1>route example</h1>
<Switch>
<Route path='/:anykey'>
<Hello />
</Route>
</Switch>
</BrowserRoute>
</div>
)
}
// add.ress/sunghoon ์ผ๋ก ์ ์ํ๋ฉด
// route example ์ ๋์ ๋ชฉ ๋ฐ์ sunghoon์ด ์์ ๋ชฉ์ผ๋ก ์๋ ํ์ด์ง๊ฐ ์ถ๋ ฅ๋๋ค.
REST API
url๊ณผ ๋ฉ์๋๋ก CRUD ์์ฒญํ๋ ๊ฒ.
Create: POST
Read: GET
Update: PUT
Delete: DELETE
useEffect()
์ด๋ค ์ํ ๊ฐ์ด ๋ฐ๋์์๋ ๋์ํ๋ ํจ์ ๊ฐ์ ๋ง๋ค ์ ์๋ค.
useEffect()
๋ ๋๊ฐ์ง ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ค.
์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์ ๋ณด ์
๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ก์๋ ์๋ํ ํจ์์ด๊ณ ,
๋๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์์กด์ฑ ๋ฐฐ์ด์๋ฆฌ๋ก ์์กด์ฑ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๊ฐ ์ด๋ค ์ ๋ณด(๋ณ์)๊ฐ ์
๋ฐ์ดํธ ๋์์๋ ์๋ํ ๊ฒ์ธ์ง ์ ํ๋ ๋ฐฐ์ด์ด๋ค.
- ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์ ์๋ฆฌ๊ฐ ์๋ค๋ฉด ํ์ด์ง ๋ด์์ ์ด๋ค ๊ฐ์ด ๋ฐ๋๋์ง
useEffect
์ ํจ์๊ฐ ์คํ๋๋ค. - ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ ๋งค๊ฐ ๋ณ์์ ๋ณ์๋ฅผ ์์๋ก ๋ฃ๋๋ค๋ฉด ๋ฐฐ์ด์ ์์์ธ ๋ณ์๊ฐ ๋ฐ๋๋๋ง ํจ์๊ฐ ์คํ๋๋ค.
- ๋ง์ฝ ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ ์ต์ด ์ฌ์ดํธ ๋ก๋ฉ๋ ๋ ํ๋ฒ๋ง ํจ์๊ฐ ์คํ๋๋ค.
fetch์ .then
fetch
๋ API๋ฅผ ๋ถ๋ฌ์ค๋ ํจ์์ด๋ค.
fetch('https://add.ress/key')
์ ๊ฐ์ ์์ผ๋ก ์ฌ์ฉํ๋ค.
๊ทธ๋ฆฌ๊ณ .then
์ fetch
ํจ์๊ฐ API ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๋ถ๋ฌ์์๋ ์๋ํ๋ ํจ์์ด๋ค.
์ด๊ฒ ํ์ํ ์ด์ ๋ฅผ ์ค๋ช
ํ์๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ ๋๊ธฐ ํจ์์ ๋น๋๊ธฐ ํจ์๋ก ๋๋๋ค.
๋๊ธฐ ํจ์๋ ์ฝ๋๊ฐ ์์์ ์๋๋ก ์คํ๋ ๋ ์คํ์ค์ธ ํจ์๊ฐ ์ข
๋ฃ๋๊ณ ๋์ ๋ค์ ํจ์๊ฐ ์คํ๋๋ ํจ์์ด๊ณ , ๋น๋๊ธฐ ํจ์๋ ์คํํ๊ณ ๋ฐ๋ก ๋ค์ ์ฝ๋๋ก ๋์ด๊ฐ ๋ค์ ํจ์๋ฅผ ์คํํ๋ ํจ์์ด๋ค.
๊ทธ๋ฆฌ๊ณ fetch
ํจ์๋ ๋ํ์ ์ธ ๋น๋๊ธฐ ํจ์์ด๋ค.
๊ทธ๋์ API ํธ์ถ์ด ๋๋์ง ์๋๋ผ๋ ์ฝ๋๊ฐ ๊ณ์ ์งํ๋๊ณ , ๋ค์ ํจ์๊ฐ ์คํ๋ ์ ์๋ค.
์ฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๋ค๋๊ฐ ํ๋ ํจ์๋ฅผ ์จ์ผํ ๋, API ํธ์ถ์ด ์๋ฃ๋ ๋ค์์ ์คํ๋์ด์ผ ๋ฐ์ดํฐ ์ ๋ถ๋ฅผ ํ ๋นํ ์ ์์ผ๋ .then
ํจ์๋ฅผ ์ด์ฉํด fetch
ํจ์์ ์คํ์ด ์๋ฃ๋ ๋ค์ .then
ํจ์๊ฐ ์คํ๋๊ฒ ํ๋ ๊ฒ ์ด๋ค.
GOOD ๐
์ ํ๋ธ ์ค์ต์ ํตํด ๋ฆฌ์กํธ๋ ์นํด์ง๋ ค๊ณ ๋ ธ๋ ฅ ์ค์ด๋ค.
BAD ๐ฅ
๋ ์ด ๋๋ฌด ๋์์ ์คํ์ ์๋ฌด๊ฒ๋ ๋ชปํ๋ค.
๋ฐฉ์ ์์ด์ปจ์ด ์์ด
TO DO ๐ฅ
- React
- props์ state ๊ฐ๋
๋ณต์ต
- ๋
ธ๋ง๋์ฝ๋ ๋ฆฌ์กํธ ํด๋ก ์ฝ๋ฉ
- ์ฝ๋ฉ์๋ง ์ ํ๋ธ ๋ง์ ๋ณด๊ธฐ
Retrospect ๐ง
- props์ state ๊ฐ๋ ๋ณต์ต
- ๋ ธ๋ง๋์ฝ๋ ๋ฆฌ์กํธ ํด๋ก ์ฝ๋ฉ
- ์ฝ๋ฉ์๋ง ์ ํ๋ธ ๋ง์ ๋ณด๊ธฐ
์ฌ๋ฆ์ ๋ฏธ์น ๊ณ์ ์ด ์๋๊ฐ ์ถ๋ค.
์๋ฌด๋๋ ์ต๊ทผ 3๋ 1๋ 365์ผ ์์ด์ปจ ๋นต๋นตํ๊ณ ๋ฐ๋ฅ ๋จ๋ํ ํ๊ฒฝ์์ ์ด๋ค๊ฐ ํน๋ ํ ๊ณ ํฅ์ง์ผ๋ก ๋์์ค๋ ๋ ์จ๊ฐ ๋๋ฌด ์ ์์ด ์๋๋ค.
์๋
10์ ์ฏค์ ๋์์๋๋ฐ, ๊ฒจ์ธ์ด๋ผ ๊ทธ๋ ์ด๋งํ๋ค.
๊ทผ๋ฐ ์ฌ๋ฆ์ด ๋๋๊น ์๊ทธ๋๋ ์์ด์ปจ ๋ฐฉ์ ์๋๋ฐ ์ด ๋ฟ๋๊ฒ ( ๋
ธํธ๋ถ, ๋ชจ๋ํฐ, ๋
์๋ฑ, ์ ํ๊ธฐ, ๋) ๋๋ฌด ๋ง์ ๋ฐฉ์ด ๋๋ฌด ๋ฅ๋ค.
๊ฐ์กฑ๋ค์ด๋ ์ด๋ป๊ฒ ํํ์ ๋ด์ ๋ฐฉ์ ์์ด์ปจ์ ๋ฌ๋๊ฐ ํด์ผ ์ด ๋ฏธ์น ๊ณ์ ์ ๋ฒํธ ์ ์์ ๊ฒ ๊ฐ๋ค.
์ด ๋ฏธ์น ๊ณ์ ์ด ๋นจ๋ฆฌ ์ง๋๊ฐ๊ธธ..
๋ด์ผ ์์นจ์ ๋ ธ๋ง๋์ฝ๋ ๋ฆฌ์กํธ ์ผ๋ถ ๋ฃ๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋๋ฌธ์ ํ๊ณ ํ๋กญ์ค ์คํ ์ดํธ ๊ฐ๋ ๋ค์ ๋ณต์ตํ ๋ค์ ์ค์ตํ ๊ฑฐ ๋ค ํ๊ณ ๋ค์ ๋ ธ๋ง๋์ฝ๋ ๋ค์ด์ผ๊ฒ ๋ค.
๋ด์ผ์ ์ง์ผ๋ณด์.
Reference ๐
์ฝ๋ฉ์๋ง๋ ์ ํ๋ธ - https://www.youtube.com/channel/UCxft4RZ8lrK_BdPNz8NOP7Q
https://developer.mozilla.org/
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TIL - 21.07.11 ๐จโ๐ป - React), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@planethoon/TIL-21.07.11์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค