[TIL]21.06.28

๋ฐ•์ฃผํ™ยท2021๋…„ 6์›” 28์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
43/104

๐Ÿ‘จโ€๐Ÿ’ป ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๊ฒƒ

  • ๋ฆฌ์•กํŠธ state ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ (Liffting State Up)๊ตฌํ˜„
  • : ์ด๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ€์ง„ ๋ฆฌ์•กํŠธ์—์„œ ์ž์‹์ปดํฌ๋„ŒํŠธ์—์„œ ์„ ํƒํ•œ ๋ฌด์—‡์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ์—์„œ ์•Œ ์ˆ˜ ์—†์„๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

  • useEffect()
  • : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋œ ์ดํ›„์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผํ•˜๋Š” ๋ถ€์ˆ˜์ ์ธ ํšจ๊ณผ๋“ค์„ sideEffect๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌํ•œ sideEffect๋Š” ๋Œ€๋ถ€๋ถ„ useEffect์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด์•ผํ•œ๋‹ค.
    useEffect(()=>{
    	// ์‚ฌ์šฉํ•˜๊ณ ์‹ถ์€ ์ฝ”๋“œ๊ตฌํ˜„
    }, [])
    // ๋‘๋ฒˆ์งธ์ธ์ž๊ฐ€ ๋นˆ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ์— ์ฒซ๋ Œ๋”๋ง์‹œ๋งŒ useEffect๊ฐ€ ์‹คํ–‰๋Œ
    
    const [value, setValue] = useState('');
    
    useEffect(()=>{
    	// ์‚ฌ์šฉํ•˜๊ณ ์‹ถ์€ ์ฝ”๋“œ๊ตฌํ˜„
    },[value])
    // ๋‘๋ฒˆ์งธ์ธ์ž ๋ฐฐ์—ด์— state๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, state๊ฐ’์ด ์ƒˆ๋กœ ๊ฐฑ์‹ ๋ ๋•Œ๋งˆ๋‹ค useEffect๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

    ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋น„๋™๊ธฐ๋ž€, ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ๋‹ค๋ฅธ ๊ณณ, Event loop๋กœ ๋Œ๋ ค์ค€๋‹ค์Œ ์ฒ˜๋ฆฌ ์ค‘์ด๊ฒŒ ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ์€ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๊ฐ€ ์—†์–ด์„œ setTimeout์ด๋ž€ API๋กœ ์ž„์˜๋กœ ์‹œ๊ฐ„์„ ๊ฑธ์–ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ.. ์•„์ง ๋” ๊ณต๋ถ€ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋Š” fetch, setTimeout๊ณผ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋“ค์ด ์žˆ๋Š”๋ฐ, ๋น„๋™๊ธฐํ•จ์ˆ˜๋“ค์„ ์“ธ๋•Œ๋Š” await์„ ์จ์ค€๋‹ค๊ฑฐ๋‚˜ Promise๋ฅผ ์‚ฌ์šฉํ•ด์„œ .then์œผ๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•œ๋‹ค. (์ฝœ๋ฐฑ์ง€์˜ฅ, ํ˜น์€ Promise์ง€์˜ฅ์— ๋น ์ง€์ง€ ์•Š๋„๋ก)


    "ํ•˜๊ธฐ ์‹ซ์–ด๋„ ์ผ๋‹จ์€ ํ•˜๊ณ  ๋ณด์ž.
    ๊ฐ์ •์€ ์‚ฌ๋ผ์ง€๊ณ  ๊ฒฐ๊ณผ๋Š” ๋‚จ๋Š”๋‹ค."

    profile
    ๊ณ ํ†ต์—†๋Š” ์„ฑ์žฅ์€ ์—†๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค....

    0๊ฐœ์˜ ๋Œ“๊ธ€