UseState
λΉκ³΅κ° κ°μΌλ‘ μ»΄ν¬λνΈμ μν΄ μ μ΄λλ€.
state(current state)
λ₯Ό ν΅ν΄ μ κ·Όνκ³ ,setState(set function)
λ₯Ό ν΅ν΄ λ³κ²½ν μ μλ€.λ°°μ΄ κ΅¬μ‘° λΆν΄λ₯Ό ν΅ν΄
state
κ°κ³Όstateλ₯Ό λ³κ²½νλ ν¨μ
λ₯Ό λ°ν λ°λλ€.
λΆλ³μ±μ μ§ν€κΈ°
리μ‘νΈμμ μν μ λ°μ΄νΈλ νμ λΆλ³νκ² μνλμ΄μΌ νλ€
μ΄μ μνμ νμ¬ μνκ° λμΌνλ©΄ 리λ λλ§μ 건λλΈ μ μλ€.(μ±λ₯ μ΅μ ν)
λ°λΌμ λΆλ³νμ§ μμΌλ©΄(νΉν μ°Έμ‘° κ°μ μ¬μ©ν λ), μνλ₯Ό μ λ°μ΄νΈ νμ§λ§ 리λ λλ§μ΄ λμ§ μμ μν©μ΄ λ°μν μ μλ€
μνμ κ°μ₯ λ°κΉ₯ μ°Έμ‘°λ₯Ό λ³κ²½νκΈ°λ§ ν΄λ 리λ λλ§μ΄ νΈλ¦¬κ±°λλ€.
λ°°μΉ μ²λ¦¬
λΉλκΈ°μ νΉμ±μ κ°μ‘κΈ° λλ¬Έμ stateλ μ¦μ λ°μλμ§ μλλ€.
λ§μ½ μ¦μ λ°μλκ² λλ€λ©΄ onClick ν¨μμμ 3λ²μ 리λ λλ§μ΄ λ°μν΄μΌ νλ λλΉκ° λ°μνκ² λλ€.
μ§μ μμ νμ§ μκΈ°
Stateλ₯Ό λ³κ²½νλ©΄ 리μ‘νΈλ λ³κ²½ λΆλΆμ 리λ λλ§νμ§λ§, μ§μ λ³κ²½(
this.state.value = "foo"
)νλ©΄ 리λ λλ§νμ§ μλλ€.
μ΄μ μν κΈ°λ° μ
λ°μ΄νΈ
μ λ°μ΄νΈλλ μνκ° μ΄μ μνλ₯Ό νμλ‘ νλ κ³μ°μΌ λ, μ΄μ μνλ₯Ό κ°μ Έμμ κ³μ°νλ€
μν λ³μ λͺ
λͺ
κ·μΉ
setterν¨μμ μ΄λ¦ μ€ μ²« κΈμλ₯Ό λ°μ μ¬μ©νκΈ°
λλ μ 체 λ³μ μ΄λ¦μ κ°μ Έμ€κΈ°
λλ prev μ λμ¬λ λΆμ¬ μ¬μ©
μ
λ°μ΄νΈ - λΉλκΈ°
Stateμ propsλ λΉλκΈ°μ μΌλ‘ μ λ°μ΄νΈλ μ μλ€ -> State λ³κ²½ μ μμ‘΄νλ©΄ μλλ€.
κ°μ²΄ νν 보λ€λ ν¨μ ννλ‘ μν μ λ°μ΄νΈλ₯Ό μ λ¬νλ€.
μ
λ°μ΄νΈ - λ³ν©(ν΄λμ€ν)
React
this.state
λ State λ³κ²½ ν¨μ(setState
)λ₯Ό ν΅ν΄ λ°μ κ°κ³Ό κΈ°μ‘΄ Stateλ₯Ό λ³ν©νλ€.Stateμμ νΉμ λ³μμ λν μ λ°μ΄νΈλ λ€λ₯Έ λ³μμ μν₯μ μ£Όμ§ μλλ€.
λ°λΌμ λ³κ²½λμ§ μλ state κ°μ κ·Έλλ‘ λ¨μ μλλ€.
μ
λ°μ΄νΈ - λ³ν©(ν¨μν)
ν¨μν
useState
μμλ λ³ν©μ΄ μλ λμ²΄λ‘ μ΄λ£¨μ΄μ§λ€.state
μ μΌλΆλ₯Ό λ³κ²½νκΈ° μν΄μ...
μ°μ°μλ₯Ό ν΅ν΄ μ 체μ λ³κ²½ λΆλΆμ κ°μ΄ μ λ¬νλ€.
νν₯μ(λ¨λ°©ν₯) λ°μ΄ν° νλ¦
Stateλ μ΄λ μ»΄ν¬λνΈμ μμ μ΄λ©°, Stateλ‘λΆν° λμ¨ UIλ λ°μ΄ν°λ μ€μ§ νμ μ»΄ν¬λνΈμ μν₯
μ»΄ν¬λνΈλ μμ μ Stateλ₯Ό μμ μ»΄ν¬λνΈμ propsλ‘ μ λ¬ ν μ μλ€.
μν λμ΄μ¬λ¦¬κΈ°
State
λ νμ μ»΄ν¬λνΈλ‘λ§ μ λ¬μ΄ κ°λ₯νκΈ° λλ¬Έμ λ€λ₯Έ μ»΄ν¬λνΈμState
λ₯Ό 곡μ νκΈ° μν΄ κ³΅ν΅ μ‘°μμΌλ‘State
λ₯Ό λμ΄ μ¬λ € μ¬μ©νλ€.
state.temperature
λμ΄ μ¬λ¦¬κΈ°stateμ setState ν¨μλ₯Ό μμ μ»΄ν¬λνΈ propsλ‘ μ λ¬νμ¬
κ³΅ν΅ μ‘°μμμ Stateλ₯Ό κ΄λ¦¬
μνλ₯Ό μ°Ύλ 3κ°μ§ μ§λ¬Έ
λΆλͺ¨λ‘λΆν° propsλ₯Ό ν΅ν΄ μ λ¬λ©λκΉ? κ·Έλ¬λ©΄ νμ€ν stateκ° μλλλ€.
μκ°μ΄ μ§λλ λ³νμ§ μλμ? κ·Έλ¬λ©΄ νμ€ν stateκ° μλλλ€.
μ»΄ν¬λνΈ μμ λ€λ₯Έ stateλ propsλ₯Ό κ°μ§κ³ κ³μ° κ°λ₯νκ°μ? κ·Έλ λ€λ©΄ stateκ° μλλλ€.
-> https://ko.reactjs.org/docs/thinking-in-react.html
λ΄λΆ λμμ λν μμ΄λμ΄
Hooksμ λν μνλ₯Ό Reactμμ κ΄λ¦¬
useStateκ° νΈμΆμ΄ λ λλ§λ€ Reactμμ λ°°μ΄μ ν 곡κ°μ ν λΉ ν΄ μ€λ€
useStateλ state λ³μμ setState ν¨μλ₯Ό λ°°μ΄λ‘ λ¬Άμ΄ λ°ν
https://react.dev/learn/state-a-components-memory#how-does-react-know-which-state-to-return
λ°°μ΄ μ
λ°μ΄νΈ
μλ‘μ΄ λ°°μ΄μ λ°ννλ μμ ν¨μλ₯Ό μ¬μ©νμ¬ μνλ₯Ό μ λ°μ΄νΈ
κΈ°μ‘΄ λ°°μ΄μ λ³κ²½νλ ν¨μλ₯Ό μ¬μ©νκΈ° μν΄μλ μ΄λ―Έ κΈ°μ‘΄ λ°°μ΄μ 볡μ¬ν ν μ¬μ©
λ°°μ΄μ μμ μΆκ°
맨 λ€μ μ½μ
νΉμ μ€κ°μ μ½μ
λ°°μ΄μμ μμ μ κ±°
λ°°μ΄μ μμ λ³κ²½
immer λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ Reactμμ λΆλ³μ±μ μ§ν€λ©΄μ useStateλ₯Ό μ¬μ©νκ² ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬
https://www.npmjs.com/package/use-immer
μν ꡬ쑰ν
1. μν κ·Έλ£Ήν
νμ λ κ° μ΄μμ μνλ₯Ό λμμ μ λ°μ΄νΈ ν΄μΌ νλ κ²½μ°, νλλ‘ λ³ν©ν μ μλμ§ μκ°ν΄λ³΄μμΌ νλ€.
ex. formμ inputs -> formμ κ°λ€μ νλμ μνλ‘ κ΄λ¦¬
2. λͺ¨μλλ μν νΌνκΈ°
μλ‘ λͺ¨μλκ³ λμν μ μλ μνλ₯Ό νΌν΄μΌ νλ€.
ex. isTyping, isSubmitting -> νμ΄ν μ€μΌ λλ μ μΆ μ€μΌ μ μκ³ , λ°λμ κ²½μ°λ λ§μ°¬κ°μ§
isTyping | isSubmitting | μνμ κ°λ₯ μ¬λΆ |
---|---|---|
false | false | λΆκ°λ₯ |
false | true | κ°λ₯ |
true | false | κ°λ₯ |
true | true | λΆκ°λ₯ |
3. κ³μ°ν μ μλ μν νΌνκΈ°
κΈ°μ‘΄μ propsλ μνλ₯Ό ν΅ν΄ κ³μ°ν μ μλ μνλ μνλ‘ μ§μ νμ§ μμμΌ νλ€
ex. isError -> error !== nullμ ν΅ν΄ νμΈ
4. μ€λ³΅ μν νΌνκΈ°
λκ°μ μνκ° μ¬λ¬ κ° μμΌλ©΄ μνλ₯Ό λκΈ°ννκ³ μ μ§νκΈ° μ΄λ ΅λ€
5. μνμ κΉμ΄ μκ² μ μ§νκΈ°
μνλ₯Ό κΉμ΄κ° κΉμΌλ©΄ μ λ°μ΄νΈνκΈ° μ΄λ ΅λ€
μν μ μ§
λμΌν μμΉμμμ μν μ μ§
UI νΈλ¦¬μ μμΉκ° λμΌνλ©΄ React μ μ₯μμλ κ°μ μ»΄ν¬λνΈλ‘ κ°μ£Όλλ€
μΈλ§μ΄νΈ μν νκ΄΄
μ»΄ν¬λνΈκ° μΈλ§μ΄νΈ λλ©΄ μνλ νκ΄΄λμ΄ μ¬λΌμ§λ€.
μνκ° μ μ§ λκΈ° μν΄μλ 리λ λλ§ μ¬μ΄μ νΈλ¦¬ κ΅¬μ‘°κ° μΌμΉν΄μΌ νλ€
Key μμ±μ μ¬μ©ν μν μ¬μ€μ
λ°°μ΄μμμ key μμ±μ μ¬μ©νλ κ²μ²λΌ key μμ±μ μ§μ νλ©΄ Reactμμ λͺ μμ μΌλ‘ μ»΄ν¬λνΈλ₯Ό ꡬλΆν μ μλ€.
μλμ μλ κ°μ UI νΈλ¦¬ μμΉμ Counter μ»΄ν¬λνΈμ§λ§, key μμ±μ ν΅ν΄ ꡬλΆνμ¬ isPlayerA κ°μ΄ λ°λ λλ§λ€ μνκ° μ¬μ€μ λλ€.
Last updated