๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/๐Ÿฅ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE ๋ถ€ํŠธ์บ ํ”„

Section2 Unit9 [React] ํด๋ผ์ด์–ธํŠธ Ajax ์š”์ฒญ

๋ฐ˜์‘ํ˜•


Section2 Unit9 [React] ํด๋ผ์ด์–ธํŠธ Ajax ์š”์ฒญ

 

๐Ÿ“Œ Chapter1. React ๋ฐ์ดํ„ฐ ํ๋ฆ„

• ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด๋ผ๋Š” ์›์น™์— ๋”ฐ๋ผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ ํ˜น์€ ํƒ€์ž…์ด ๋ฌด์—‡์ธ์ง€๋งŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ state๋กœ๋ถ€ํ„ฐ ์™”๋Š”์ง€, ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์ธ์ง€๋Š” ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ์–ด๋–ค ์ด๋ฒคํŠธ๋กœ ์ธํ•ด ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์€ ๋งˆ์น˜ “์—ญ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„”๊ณผ ๊ฐ™์ด ์กฐ๊ธˆ ์ด์ƒํ•˜๊ฒŒ ๋“ค๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 React๊ฐ€ ์ œ์‹œํ•˜๋Š” ํ•ด๊ฒฐ์ฑ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 → ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ “์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜” ๊ทธ ์ž์ฒด๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๊ณ , ์ด ํ•จ์ˆ˜๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰ํ•œ๋‹ค.

์ด๋ฅผ “์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ(Lifting State Up)”๋ผ๊ณ  ํ•œ๋‹ค.

 

 ์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ React์˜ state๊ธ€์— ์œ„์™€ ๊ฐ™์ด ์ •๋ฆฌํ•ด๋‘์—ˆ๊ณ ,

 React์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋Œ€ํ•ด์„œ๋„ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉฐ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

React์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„ - React๋กœ UI๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„

๐Ÿ‘พ React๋กœ UI๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„ ๐Ÿ’ฌ ์ด๋ฒˆ ๊ธ€์€ React ๊ณต์‹๋ฌธ์„œ์˜ ๊ธ€์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋‚˜๋ฆ„๋Œ€๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ React ๊ณต์‹๋ฌธ์„œ ์ฐธ๊ณ ํ•˜๋ฉฐ ํ•™์Šตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚ React

fay-story.com

 

 

๐Ÿ“Œ Chapter2. Effect Hook

 Side Effect์™€ ์ˆœ์ˆ˜ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์–ธ๊ธ‰๊ณผ ํ•จ๊ป˜ Effect Hook์ธ useEffect๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ๊ด€๋ จ ์˜ˆ์ œ๋„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. 

 

React Hooks - useEffect

useEffect๋Š” ๋ฆฌ์•กํŠธ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์ œ์–ดํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ Hook์œผ๋กœ, ์–ด๋–ค ์ƒํƒœ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. // useEffect ๋ฌธ๋ฒ• import { useEffect } from "rea

fay-story.com

 

Side Effect์™€ ์ˆœ์ˆ˜ํ•จ์ˆ˜์™€ ๊ด€๋ จ๋œ ์žฌ๋ฐŒ๋Š” ํ€ด์ฆˆ๊ฐ€ ์žˆ์–ด์„œ ๊ธฐ๋ก๐Ÿ“ 

 

โ“ Math.random()์€ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์™œ์ผ๊นŒ์š”?

    → Math.random() ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ๋™์ผํ•œ ์ž…๋ ฅ์—๋„ ๋‹ค๋ฅธ ์ถœ๋ ฅ์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

โ“ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ fetch API๋ฅผ ์ด์šฉํ•ด AJAX ์š”์ฒญ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์™œ์ผ๊นŒ์š”?

    → ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์„œ๋ฒ„์— ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋ฉด ์ด๋กœ ์ธํ•ด ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ์— Side Effect๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๊ณ , ์ด์— ๋”ฐ๋ผ ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

 


๐ŸŒ™  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

 ์˜ค๋Š˜ ๊ณผ์ œ์˜€๋˜ States Airline part 1์„ ํ•ด๊ฒฐํ•˜๊ณ , ์Šคํ„ฐ๋”” ์ด๋ฒคํŠธ ์ฃผ์ œ์˜€๋˜ Movie App๋„ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, clone์„ ํ•˜๊ณ  npm install์œผ๋กœ dependencies๋ฅผ ๋ฐ›๊ณ , ์•ฑ์„ ์‹คํ–‰ํ•˜๋ ค๋Š”๋ฐ ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. ํ™”๋ฉด์— ๋‚˜์˜ค์ง€๋„ ์•Š๊ณ , ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋งŒ ์ž”๋œฉ ์ถœ๋ ฅ๋˜๊ธธ๋ž˜ ์—„์ฒญ ์• ๋จน์—ˆ๋‹ค…

๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง ๋‘์‹œ๊ฐ„์œผ๋กœ ๋ญ˜ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์ž„์‹œ ํ•ด๊ฒฐ์„ ํ•ด์„œ ์ด์ œ ์‹คํ–‰์€ ๋˜๋Š”๋ฐ, ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ์ง€ ์ „ํ˜€ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ react-scripts ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋‹ˆ ํ•ด๊ฒฐ์ด ๋˜์—ˆ๋Š”๋ฐ, ์Œ… ํœด. ๋‹ด์— ๋˜ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ๋˜‘๊ฐ™์ด ๊ตฌ๊ธ€๋ง ํ•˜๊ณ  ์žˆ์„๋“ฏ ํ•˜๋‹ค…

 ๊ทธ๋ž˜๋„ ์ผ๋‹จ ํ™”๋ฉด์€ ๋‚˜์˜ค๊ฒŒ ํ–ˆ์œผ๋‹ˆ, Movie App๋„ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ด์•ผ์ง€.

 ๊ฒฐ๊ตญ ์˜ค๋Š˜ Movie App ๋ฆฌ๋ทฐ๋„ ํ•˜๊ณ , States Airline part 2 ๊นŒ์ง€ ์™„๋ฃŒํ•˜์˜€๋‹ค ๐Ÿ˜Š ๋‚ฎ์—” ๋‚ด๋‚ด ์ง‘์ค‘์ด ์•ˆ๋˜๋”๋‹ˆ ์ €๋…๋˜๋‹ˆ๊นŒ ์‚ด์•„๋‚œ๊ฑฐ.. ๋ ์ผ์ด๋ƒ๊ตฌ,, ๐Ÿ˜ญ 

๋ฐ˜์‘ํ˜•