TIL - 21.07.11 ๐Ÿ‘จโ€๐Ÿ’ป - React

6908 ๋‹จ์–ด ReactTILReact

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()๋Š” ๋‘๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„๋‹ค.
์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ •๋ณด ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์กŒ์„๋•Œ ์ž‘๋™ํ•  ํ•จ์ˆ˜์ด๊ณ ,
๋‘๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด์ž๋ฆฌ๋กœ ์˜์กด์„ฑ ๋ฐฐ์—ด์€ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ค ์ •๋ณด(๋ณ€์ˆ˜)๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์„๋•Œ ์ž‘๋™ํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•˜๋Š” ๋ฐฐ์—ด์ด๋‹ค.

  1. ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์–ด๋–ค ๊ฐ’์ด ๋ฐ”๋€Œ๋˜์ง€ useEffect์˜ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  2. ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๋„ฃ๋Š”๋‹ค๋ฉด ๋ฐฐ์—ด์˜ ์š”์†Œ์ธ ๋ณ€์ˆ˜๊ฐ€ ๋ฐ”๋€”๋•Œ๋งŒ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  3. ๋งŒ์•ฝ ๋นˆ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ ์ตœ์ดˆ ์‚ฌ์ดํŠธ ๋กœ๋”ฉ๋ ๋•Œ ํ•œ๋ฒˆ๋งŒ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

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 ๐Ÿง

์—ฌ๋ฆ„์€ ๋ฏธ์นœ ๊ณ„์ ˆ์ด ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค.

์•„๋ฌด๋ž˜๋„ ์ตœ๊ทผ 3๋…„ 1๋…„ 365์ผ ์—์–ด์ปจ ๋นต๋นตํ•˜๊ณ  ๋ฐ”๋‹ฅ ๋œจ๋ˆํ•œ ํ™˜๊ฒฝ์—์„œ ์‚ด๋‹ค๊ฐ€ ํ˜น๋…ํ•œ ๊ณ ํ–ฅ์ง‘์œผ๋กœ ๋Œ์•„์˜ค๋‹ˆ ๋‚ ์”จ๊ฐ€ ๋„ˆ๋ฌด ์ ์‘์ด ์•ˆ๋œ๋‹ค.

์ž‘๋…„ 10์›” ์ฏค์— ๋Œ์•„์™”๋Š”๋ฐ, ๊ฒจ์šธ์ด๋ผ ๊ทธ๋• ์‚ด๋งŒํ–ˆ๋‹ค.
๊ทผ๋ฐ ์—ฌ๋ฆ„์ด ๋˜๋‹ˆ๊นŒ ์•ˆ๊ทธ๋ž˜๋„ ์—์–ด์ปจ ๋ฐฉ์— ์—†๋Š”๋ฐ ์—ด ๋ฟœ๋Š”๊ฒŒ ( ๋…ธํŠธ๋ถ, ๋ชจ๋‹ˆํ„ฐ, ๋…์„œ๋“ฑ, ์„ ํ’๊ธฐ, ๋‚˜) ๋„ˆ๋ฌด ๋งŽ์•„ ๋ฐฉ์ด ๋„ˆ๋ฌด ๋ฅ๋‹ค.

๊ฐ€์กฑ๋“ค์ด๋ž‘ ์–ด๋–ป๊ฒŒ ํƒ€ํ˜‘์„ ๋ด์„œ ๋ฐฉ์— ์—์–ด์ปจ์„ ๋‹ฌ๋˜๊ฐ€ ํ•ด์•ผ ์ด ๋ฏธ์นœ ๊ณ„์ ˆ์„ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

์ด ๋ฏธ์นœ ๊ณ„์ ˆ์ด ๋นจ๋ฆฌ ์ง€๋‚˜๊ฐ€๊ธธ..

๋‚ด์ผ ์•„์นจ์— ๋…ธ๋งˆ๋“œ์ฝ”๋” ๋ฆฌ์•กํŠธ ์ผ๋ถ€ ๋“ฃ๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘๋ฌธ์ œ ํ’€๊ณ  ํ”„๋กญ์Šค ์Šคํ…Œ์ดํŠธ ๊ฐœ๋… ๋‹ค์‹œ ๋ณต์Šตํ•œ ๋‹ค์Œ ์‹ค์Šตํ• ๊ฑฐ ๋‹ค ํ•˜๊ณ  ๋‹ค์‹œ ๋…ธ๋งˆ๋“œ์ฝ”๋” ๋“ค์–ด์•ผ๊ฒ ๋‹ค.

๋‚ด์ผ์€ ์ง€์ผœ๋ณด์ž.

Reference ๐Ÿ™‡

์ฝ”๋”ฉ์•™๋งˆ๋‹˜ ์œ ํŠœ๋ธŒ - https://www.youtube.com/channel/UCxft4RZ8lrK_BdPNz8NOP7Q
https://developer.mozilla.org/

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ