๐Ÿ“‚ ํˆฌ๋ฐ์ด ํ•ซ๋ธŒ๋ ˆ์ธ ์ฃผ์ œ

H.wang(ํ™ฉ์œ ๋ฆผ)์˜ Reactย useState ์™„๋ฒฝ ํ•ด๋ถ€ํ•™

@์•„ํ‹ฐํด ์˜๊ฐ ์–ป์€ moment:

/๋ฆฌ์•กํŠธ์˜ State๋Š” ๋‘๋”์ง€์—๊ฒŒ ๋ถˆ์–ด๋„ฃ๋Š” โ€˜์ƒ๋ช…๋ ฅโ€™๊ณผ ๊ฐ™๋‹ค/

์ถœ์ฒ˜: ํ™ฉ์œ ๋ฆผ [3์ฃผ์ฐจ React์—ฐ์Šต๊ณผ์ œ(๋‘๋”์ง€๊ฒŒ์ž„)]

//[ํ•ต์‹ฌ์ฝ”๋“œ1]: ์„ค์ •
const [timeLeft, setTimeLeft] = useState(15.0); //๋‚จ์€์‹œ๊ฐ„(์ˆซ์ž)
const [score, setScore] = useState(0);           //์ ์ˆ˜(์ˆซ์ž)
const [moles, setMoles] = useState(Array(4).fill('empty')); //๊ตฌ๋ฉ์ƒํƒœ(๋ฐฐ์—ด)
const [isActive, setIsActive] = useState(false); //๊ฒŒ์ž„์ง„ํ–‰์—ฌ๋ถ€(๋ถˆ๋ฆฌ์–ธ)
//[ํ•ต์‹ฌ์ฝ”๋“œ2]: ์ด์ „์ƒํƒœ ์ฐธ์กฐํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ
setMoles((currentMoles) => {
              let updatedMoles = [...currentMoles]; //๊ธฐ์กด๋ฐฐ์—ด๋ณต์‚ฌ(๋ถˆ๋ณ€์„ฑ์œ ์ง€)
              if (updatedMoles[randomIndex] !== 'hit') {
                updatedMoles[randomIndex] = 'empty';
              }
              return updatedMoles; //์ƒˆ๋กœ์šด์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ํ™”๋ฉด ์—…๋ฐ์ดํŠธ
            });
//[ํ•ต์‹ฌ์ฝ”๋“œ3]: ๋ถ€๋ชจ์˜ ์ƒํƒœ๋ฅผ ์ž์‹์—๊ฒŒ ์ „๋‹ฌ
<StatusBoard
          timeLeft={timeLeft.toFixed(1)}
          score={score}
          successCount={successCount}
          failCount={failCount}
        />
        <MoleGrid moles={moles} onMoleClick={targetClick} />

์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ.. ์ €๋Š” ๋ฆฌ์•กํŠธ ์ƒํƒœ(State)์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋А๋ผ ๋‡Œ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

01. Intro: ๋ณ€์ˆ˜๋ฉด ๋ณ€์ˆ˜์ง€, ์™œ '์ƒํƒœ'๋ผ๊ณ  ๋ถ€๋ฅผ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์“ฐ๋˜ย let a = 10;ย ๊ฐ™์€ ์ผ๋ฐ˜ ๋ณ€์ˆ˜๋Š” ๊ฐ’์ด ๋ฐ”๋€Œ์–ด๋„ ํ™”๋ฉด์ด ๊ฟˆ์ฉ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋ผ๋Š” ๊นŒ๋‹ค๋กœ์šด ์•„์ด๋Š” โ€œ๋‚ด๊ฐ€ ๊ฐ์‹œํ•˜๊ณ  ์žˆ๋Š” ์ „์šฉ ๋ณ€์ˆ˜(State)๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งŒ, ํ™”๋ฉด์„ ์ƒˆ๋กœ ๊ทธ๋ ค์ค„ ๊ฑฐ์•ผ!" ๋ผ๊ณ  ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

๋„๋Œ€์ฒดย useState๊ฐ€ ๋ญ๊ธธ๋ž˜ ์šฐ๋ฆฌ๋ฅผ ์ดํ† ๋ก ํž˜๋“ค๊ฒŒ ํ• ๊นŒ์š”? ๋ฆฌ์•กํŠธ์˜ ์‹ฌ์žฅ, ์ƒํƒœ ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ์„ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋‚ฑ๋‚ฑ์ด ํ•ด๋ถ€ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


02. useState๋Š” ์ง‘์•ˆ์˜ '์Šค๋งˆํŠธ ์ปจํŠธ๋กค๋Ÿฌ'๋‹ค!

์ง‘ ๊ตฌ์กฐ(HTML/์ปดํฌ๋„ŒํŠธ)๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์ง€๋งŒ, ์ปจํŠธ๋กค๋Ÿฌ์˜ ์„ค์ •๊ฐ’(State)์— ๋”ฐ๋ผ ์กฐ๋ช…์ด ์ผœ์ง€๊ฑฐ๋‚˜ ์—์–ด์ปจ์ด ์ž‘๋™ํ•˜๋“ฏ, ๋ฆฌ์•กํŠธ ๋˜ํ•œ, ์ƒํƒœ์— ๋”ฐ๋ผ UI๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

[๋ฆฌ์•กํŠธ ์ƒํƒœ ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋…]