[React] Hook ๐Ÿ‘‰ UseState

์Šน๋ฏธ๋‹ˆยท2021๋…„ 6์›” 13์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
2/10

1. useState๋ž€?

useState๋Š” state๋ฅผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
์ฆ‰, useState๋ฅผ ์ด์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ์— ์ƒํƒœ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const [state, setState] = useState(initialState);
//    [์ƒํƒœ๊ฐ’, ์ƒํƒœ๊ฐ’๋ณ€๊ฒฝํ•จ์ˆ˜] = useState(์ƒํƒœ๊ฐ’์˜์ดˆ๊ธฐ๊ฐ’)
  • ์ƒํƒœ ์œ ์ง€ ๊ฐ’๊ณผ ๊ทธ ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ํ•จ์ˆ˜(์ƒํƒœ๊ฐ’ ๋ณ€๊ฒฝ ํ•จ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์ตœ์ดˆ๋กœ ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๋™์•ˆ ๋ฐ˜ํ™˜๋œ state๋Š” parameter์ธ initialstate์˜ ๊ฐ’๊ณผ ๋™์ผํ•˜๋‹ค.
  • setState ํ•จ์ˆ˜๋Š” ์ƒˆ state๊ฐ’์„ ๋ฐ›์•„ state๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋‹ค์Œ ๋ฆฌ๋ Œ๋”๋ง ์‹œ์— useState๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜ ๋ฐ›์€ ์ฒซ๋ฒˆ์งธ ๊ฐ’์€ ํ•ญ์ƒ ๊ฐฑ์‹ ๋œ ์ตœ์‹  state์ด๋‹ค.

2. ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ state๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ”๊พธ๊ณค ํ–ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ useState Hook์„ ์ด์šฉํ•˜์—ฌ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํŠน์ง•

  • ํ•ญ์ƒ 2๊ฐœ์˜ value๋ฅผ returnํ•œ๋‹ค.
    -> ์ƒํƒœ๊ฐ’, ์ƒํƒœ๊ฐ’ ๋ณ€๊ฒฝ ํ•จ์ˆ˜
    const [item, setItem] = useState(1);
  • ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ํ•˜๋‚˜์˜ value๋งŒ returnํ•  ์ˆ˜ ์žˆ๋‹ค.
    const item = useState(1)[0];
  • ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•  ๋•Œ์ด๋‹ค.
    incrementItem = () => setItem(item-1);

4. ์˜ˆ์‹œ

import React, { useState } from "react";

export default function App() {
  const [count, setCount] = useState(0);
  return (
    <div className="App">
      {count}
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}
profile
Web Frontend Developer

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