useState()
1. κ°μ
리μ‘νΈμμ κ°μ₯ λ§μ΄ μ¬μ©νλ ν
μ νλ λ§νμλ©΄ useState()κ° λ κ²μ΄λ€. useState()λ μ΄λ¦μμ μ μ μλ―μ΄ stateλ₯Ό μ¬μ©νκΈ° μν ν
μ΄λ€. μ¦, useState()λ₯Ό ν΅ν΄ λμ μΌλ‘ λ³νλ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν μ μλ€.
2. useState()λ₯Ό μ¬μ©νμ§ μλλ€?!
import React, { useState } from "react";
const Counter = () => {
let number = 1;
const onIncrease = () => {
number += 1;
console.log("μ¦κ° / number:", number);
};
const onDecrease = () => {
number -= 1;
console.log("κ°μ / number:", number);
};
return (
<div>
<h1>μΉ΄μ΄νΈ: {number}</h1>
<button onClick={onIncrease}>+</button>
<button onClick={onDecrease}>-</button>
</div>
);
};
export default Counter;
μμ μ»΄ν¬λνΈλ λ²νΌμ ν΄λ¦νμ¬ μΉ΄μ΄νΈλ₯Ό νλμ© μ¦κ°μν€κ±°λ κ°μμν€κ³ νμ¬μ μΉ΄μ΄νΈλ₯Ό 보μ¬μ£Όλ λ¨μν μ»΄ν¬λνΈμ΄λ€.
νμ§λ§ λ²νΌμ λλ¬ μΉ΄μ΄νΈλ₯Ό μ¦κ°, κ°μλ₯Ό μν€λ©΄ μΉ΄μ΄νΈμ κ°μ΄ λ°λμ§ μλ κ²μ λ³Ό μ μλ€. κ·Έλ λ€λ©΄ λ³μ numberκ°μ΄ λ³νμ§ μμμ μΌκΉ? λ²νΌμ ν΄λ¦νλ©΄ μ€νλλ ν¨μμ μ½μλ‘ numberκ°μ μ°μ΄λ³΄λ©΄ μλμ κ°μ΄ κ³μ λ³νλ κ²μ μ μ μλ€.

numberκ°μ΄ κ³μν΄μ λ³νμ§λ§ νλ©΄μ λ³ν numberκ°μ΄ λνλμ§ μλ μ΄μ λ 리μ‘νΈκ° μ¬λλλ§μ νμ§ μμμ μ΄λ€.
numberμ κ°μ΄ λμ μΌλ‘ κ³μν΄μ λ³νκΈ° λλ¬Έμ μ°λ¦¬λ useState()λ₯Ό μ¬μ©ν΄μ ν
μ΄ν°λ₯Ό κ΄λ¦¬ν΄μΌ νλ€.
3. useState() μ¬μ©νκΈ°
useState() μλμ κ°μ΄ μ¬μ©νλ€.
const [λ³μλͺ , setν¨μλͺ ] = useState(μ΄κΉκ°); λ³΄ν΅ setν¨μνμ λ³μλͺ μμ setλ₯Ό λΆμΈλ€. μλ₯Όλ€μ΄ λ³μλ₯Ό
nameμ΄λΌκ³ μ§μμΌλ©΄ setν¨μλͺ μsetNameμΌλ‘ μ§λλ€. μ΄κΉκ°μ μ΄λ€ νμ μΌλ‘ μ ν΄λ λκ³ μλ΅μ ν΄λ λλ€. μλ΅μ νμ λλundefinedκ° λλ€.
useState() λ₯Ό μ¬μ©νμ¬ μμ Counter μ»΄ν¬λνΈμ numberκ°μ κ΄λ¦¬ν΄λ³΄μ.
μμ κ°μ΄ μ½λλ₯Ό μμ νλ©΄ +, - λ²νΌμ λλ₯Ό λ λ§λ€ numberκ°μ΄ λ°λκ² λλ€.

μ½μμ°½λ ν¨κ» 보며 λΉκ΅ν΄λ³΄μ.

νλ©΄μλ numberκ°μ΄ 4λΌκ³ λμ€μ§λ§ μ½μμλ μ¦κ° / number: 3μ΄ μ°νλ κ²μ λ³Ό μ μλ€. μ΄λ inCrease()ν¨μ λ΄μμ μ½μμ΄ μ°ν ν numberκ°μ΄ λ°λκ³ λμ μ¬λ λλ§μ΄ λκΈ° λλ¬Έμ΄λ€. μ¦, μλμ κ°μ κ³Όμ μ κ±°μΉλ€κ³ λ³Ό μ μλ€.
setNumber((prev) => prev + 1);ν¨μ μ€ν (λΉλκΈ°)console.log("μ¦κ° / number:", number);ν¨μ μ€νnumberκ°μ΄ λ°λλ©° νμ΄μ§κ° μ¬λ λλ§<h1>μΉ΄μ΄νΈ: {number}</h1>μ λ³νλnumberκ°μ΄ μ μ©λλ€.
κ·Έλ λ€λ©΄! inCrease()ν¨μλ΄μ consolo.logμ λ³κ²½λ numberκ°μ΄ μ°νκ² νκΈ° μν΄μλ μ΄λ»κ² ν κΉ? μ¦, μ¬λ λλ§μ΄ λλ©΄μ λμμ λ³νλ stateκ°(μ¬κΈ°μλ number)μ λ€λ₯Έ ν¨μλ‘ μ¬μ©νκΈ° μν΄μ λ€μ μ±ν°μμ λ°°μΈ useEffect()λ₯Ό μ¬μ©νλ©΄ λλ€. μμΈν λ΄μ©μ useEffect()μ±ν°μμ λ€λ£¬λ€.
4. setState()
setState()λ 리μ‘νΈ ν¨μν μ»΄ν¬λνΈ λ΄μ μνλ₯Ό κ΄λ¦¬νκΈ° μν΄ μ¬μ©νλ hooksμΈ useState()λ₯Ό ν΅ν΄ λ°νλλ ν¨μμ΄λ€. setState()λ μλμ κ°μ νΉμ§μ΄ μλ€.
κΈ°λ³Έμ μΌλ‘ λΉλκΈ°μ μΌλ‘ λμνλ€.
state κ°μ²΄λ₯Ό λκ±°μ€ μ μμ λΏλ§ μλλΌ μλ‘μ΄ stateλ₯Ό λ°ννλ ν¨μλ₯Ό μΈμλ‘ λκ²¨μ€ μ μλ€.
setState()μ μ λ¬μΈμμ λν΄ μμΈν μ΄ν΄λ³΄μ
μλλ setState()μ νμ
μ λνλΈ μ½λμ΄λ€.
μμ λ΄μ©μ μ 리νμλ©΄ setState()μ μ λ¬μΈμλ λ μ’
λ₯κ° λ€μ΄κ° μ μλ€.
S: stateκ° μ΄λ»κ² λ³κ²½λμ΄μ ΈμΌ νλ€λΌλ κ·Έ κ°μ λ£μ μ μλ€.
((prevState: S) => S): μ΄μ μ stateλ₯Ό μΈμλ‘ λ°κ³ μλ‘μ΄ stateλ₯Ό λ°ννλ ν¨μ(μ½λ°±ν¨μ)λ₯Ό λ£μ μ μλ€.
3. useState μ¬μ©νκΈ°μμλ λ λ²μ§Έ λ°©λ²μΌλ‘ μΈμλ₯Ό λ£μλ€.
5. Conclusion
useState()λ λ€μμ λ°°μΈuseEffect()μ ν¨κ» 리μ‘νΈμμ μμ£Ό μ¬μ©νκ³ μλ ν μ΄λ€. κΈ°λ³Έμ μΈ μ¬μ©λ°©λ²μ μ΄λ―Έ μκ³ μλ λ΄μ©μ΄λΌ 곡λΆνκ³ μ΄ν΄νλ λ°μλ ν° μ΄λ €μμ λλΌμ§ μμλ€. νμ§λ§setState()ν¨μκ° λΉλκΈ°λΌλ κ²μ μκ² λμλ€. κ·Έ μ μλ κ·Έλ₯stateκ°μ λ°κΎΈκΈ° μν΄ μ¬μ©νλ ν¨μλΌλ μ λλ§ μκ³ μμλ€. ν΄λΉ λ΄μ©μ λν νμ΅μ΄ μκΈ° μ μλ "μsetState()λ₯Ό μ¬μ©ν΄μstateκ°μ λ°κΎΈμλλ° λ°λ‘ μ μ©μ΄ λμ§ μμκΉ?"λΌλ κΆκΈμ¦μ΄ μμλλ° κΆκΈμ¦μ΄ ν΄κ²°λμ΄μ μμ΄ λ»₯ λ«λ¦° κΈ°λΆμ΄λ€.π
μ°Έκ³
λμ - μνμ μ²μ λ§λ 리μ‘νΈ 7. useState λ₯Ό ν΅ν΄ μ»΄ν¬λνΈμμ λ°λλ κ° κ΄λ¦¬νκΈ° Reactμ setState() μ λλ‘ μ¬μ©νκΈ°
π 2022-07-26
Last updated