โœ๐Ÿป [Code Camp_TIL] 12์ผ์ฐจ: state์™€ prev

code_Jยท2023๋…„ 4์›” 3์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
18/41
post-thumbnail

State์™€ Prev


import { useState } from 'react'

export default function New() {
    const [count, setCount] = useState(0)
    
    function handleClick() {
        setCount(count + 1)     // ๊ฐฏ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ, ํ™”๋ฉด์— ์ •์ƒ์ ์œผ๋กœ **๋ฐ˜์˜๋จ**
    }

    return (
        <div>
            <h1>{count}</h1>
            <button onClick={handleClick}>state๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ count ์ฆ๊ฐ€</button>
        </div>
    )
}

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด button์„ ํด๋ฆญํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งŒ์•ฝ, count๋ฅผ 5์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?


function handleClick() {
   setCount(count + 1)      
  // ํ˜„์žฌ count๋Š” 0 + 1 => 1 ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์ €์žฅ
   setCount(count + 1)      
  // 1 ์ด ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ๋‹ด๊ฒผ์ง€๋งŒ ์—ฌ์ „ํžˆ count๋Š” 0 ์ด๋ฏ€๋กœ 1์ด ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์ €์žฅ๋จ
   setCount(count + 1)      
  // ์œ„์™€ ๋™์ผ
   setCount(count + 1)      
  // ์œ„์™€ ๋™์ผ
   setCount(count + 1)      
  // ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ตœ์ข…์ ์œผ๋กœ 1์ด ๋‹ด๊ฒจ ํ™”๋ฉด์— 1์ด ๋ฐ˜์˜๋จ
}

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ๋Š” count๊ฐ€ ํ•˜๋‚˜์”ฉ๋งŒ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. ๋งค๋ฒˆ ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— 1์„ ๋‹ด์ง€๋งŒ, ๋‹ค์Œ ์ค„์˜ ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋‹ค์‹œ ์ƒˆ๋กญ๊ฒŒ 1์„ ๋‹ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ count๊ฐ€ 5์”ฉ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” prev๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.


function handleClick() {
   setCount((prev)=>prev+1)     
  // ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์˜ 0(๊ธฐ๋ณธ๊ฐ’, prev) + 1 => 1์„ ๋‹ด๋Š”๋‹ค.
   setCount((prev)=>prev+1)     
  // ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ๋‹ด๊ธด 1(prev) + 1 => 2๋ฅผ ๋‹ด๋Š”๋‹ค.
   setCount((prev)=>prev+1)     
  // ...
   setCount((prev)=>prev+1)     
  // ...
   setCount((prev)=>prev+1)     
  // ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ตœ์ข…์ ์œผ๋กœ 5๊ฐ€ ๋‹ด๊ฒจ ํ™”๋ฉด์— 5๊ฐ€ ๋ฐ˜์˜๋จ
}

prev๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์žˆ๋Š” ๊ฐ’์„ ๋จผ์ € ๊บผ๋‚ด์˜ค๊ณ , ๋งŒ์•ฝ ์ž„์‹œ ์ €์žฅ๊ณต๊ฐ„์— ์žˆ๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค!

state๋Š” ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์ƒˆ๋กญ๊ฒŒ ๊ฐ’์„ ์ €์žฅํ•˜์ง€๋งŒ, prev๋Š” ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์— ์žˆ๋Š” ๊ฐ’์„ ๊บผ๋‚ด์˜จ๋‹ค! prev๊ฐ€ ์ž„์‹œ์ €์žฅ๊ณต๊ฐ„์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•  ์ค„ ์•„๋Š” ์•„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

profile
Web FE ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ

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