useTransition, uesDeferredValue
Last updated
Last updated
useTransition ν μ μ¬μ©ν΄ UI κ°±μ μ μ§μ°μν€λ λ°©λ²
isPending λΆλ¦° κ°μ μ¬μ©ν΄ μΌκ΄μ± μλ μνμ UIμ λν νλκ·Έλ₯Ό λ¨κΈ°λ λ°©λ²
useDefferedValue ν μ μ¬μ©ν΄ μμ κ°κ³Ό μλ‘μ΄ κ°μ λμμ μ¬μ©νλ λ°©λ²
SuspenseList μ»΄ν¬λνΈλ₯Ό μ¬μ©ν΄ μ¬λ¬ ν΄λ°± UIλ₯Ό κ΄λ¦¬νλ λ°©λ²
λμμ± λ λλ§μ΄ μ 곡νλ κΈ°λ₯ μ΄ν΄νκΈ°
λμμ± λͺ¨λλ₯Ό μ¬μ©νλ©΄ 리μ‘νΈκ° λμμ μ¬λ¬ λ²μ μ UIλ₯Ό λ©λͺ¨λ¦¬μμ λ λλ§νκ³ νμ¬ μνμ κ°μ₯ μ ν©ν λ²μ λ§ DOMμ κ°±μ νλ€.
νμ¬ μνμ κ°±μ μ΄ μλ£λ λκΉμ§ μκ°μ΄ κ±Έλ €λ μ΄μ λ²μ μ UIλ₯Ό DOMμ νμ κ°λ₯
μ°μ μμκ° λ λμ κ°±μ (μ¬μ©μ μΈν°λ μ )μ΄ μ΄λ€μ§λ λμ 리μ‘νΈκ° λ λλ§μ μΌμμ€λ¨ κ°λ₯
μ΄λ° μ μ°μ±μ μ±μ λ°μμ±μ μ μ§νκ³ μ¬μ©μκ° μΈμ§νλ μ±μ μ±λ₯μ κ°μ νλλ° λμμ΄ λλ€.
리μνΈκ° ν λ²μ μ¬λ¬ λ²μ μ UIμμ μλνκ² νλλ°, μ λ²μ μ΄ μ€λΉλ λκΉμ§ μμ ν μνΈμμ©ν μ μλ μ΄μ λ²μ μ νμνλ€.
μ¦, λ¨κΈ°μ μΌλ‘ μ΅μ μνκ° λΈλΌμ°μ μ νμ¬ UIμ μΌμΉνμ§ μμ μλ μλ€λ λ»
λμμ± λͺ¨λλ₯Ό μ¬μ©νλ €λ©΄ μ±μ΄ μ΄κΈ°μ λΈλΌμ°μ μ λ λλ§λλ λ°©μμ λ³κ²½ν΄μΌ νλ€.
λͺ©νλ μ±μ μ¬μ©μ κ²½νμ ν₯μνκ³ μ±μ΄ λ λ°μμ μΌλ‘ λκ»΄μ§κ² λ§λ€κ³ , κ°±μ μ μ‘°μ¨ν΄ μ¬μ©μκ° λ¬΄μμ΄ μ€λλκ³ λ¬΄μμ΄ κ°±μ μ€μ΄λ©° 무μμ΄ μ΅μ λ΄μ©μΈμ§ μ¦μ μ΄ν΄ν μ μκ² νλκ²
μ»΄ν¬λνΈκ° μ λ°μ΄ν°λ₯Ό μ μ¬νκ±°λ μ κ°μ κ³μ°νλ λμ 리μ‘νΈκ° μ΄μ UIλ μ΄μ κ°μ κ³μ νμνλλ‘ νμ©
νν΄ μν(receded state)λ₯Ό λ°©μ§νλλ° λμμ΄ λκΈ° λλ¬Έ
리μνΈκ° μ μ©νκ³ μνΈμμ©μ΄ κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μ΄μ μ μ μ¬ μ€ μνλ‘(μ€μλ‘) μ ννλ κ²½μ° μ΄λ₯Ό λΉμ μμ μΈ μνλΌκ³ λ§ν¨
ex: μ¬μ©μ λͺ©λ‘μμ μλ‘μ΄ μ¬μ©μλ₯Ό μ ννλ©΄ μ¬μ©μ μμΈ μ 보 ν¨λμ μ€νΌλλ‘ λ체νλ€. μ΄λ μ΄μ μΌλ‘ λλμκ°λ λλμ΄ λ€κΈ° λλ¬Έμ μ½κ° 좩격μ , μ΄λ° μνλ₯Ό νν΄ μνλΌ λΆλ₯Έλ€.
μμΉ μλ λ‘λ©μ νμ X
μ€νΌλλ‘ λ€μ λμκ°μ§ μκ³ μ΄μ UI μ 보λ₯Ό κ³μ νμ "
startTransition
μ UIλ₯Ό Blocking μκ³ μνλ₯Ό μ λ°μ΄νΈν μ μκ² ν΄μ€λλ€."
μν λ³κ²½μΌλ‘ μΈν΄ νμ μ»΄ν¬λνΈκ° μΌμμ€λ¨λ λ 리μνΈκ° μ΄μ UIλ₯Ό νμν μ μλλ‘ useTransition ν μ μ¬μ©
useTransition ν μ νμ μ»΄ν¬λνΈκ° μΌμμ€λ¨λ μ μλ μν λ³κ²½μ κ°μ λ μ¬μ©νλ ν¨μκ° ν¬ν¨λ λ°°μ΄μ λ°ν
μ λ°μ΄ν° μ μ¬μ μ€λ μκ°μ΄ κ±Έλ¦°λ€λ©΄, μ¬μ©μκ° μ΄μ UIλ₯Ό 보면μ νΌλμ λΉ μ§μ μλ€.
λ°λΌμ μ±μ΄ λ°μ΄ν°λ₯Ό μ μ¬νλλΌ λ°μλ€λ μ¬μ€μ μλ €μ£ΌκΈ° μν΄ λͺκ°μ§ νΌλλ°±μ μ 곡ν΄μΌ νλ€.
μν λ³κ²½ μ μ€νΌλλ‘ λ€μ λμκ°μ§ μλ κ²μ μλ‘μ΄ μν λ°μ΄ν°μ μ μ¬μ μκ°μ΄ μ€λ κ±Έλ¦¬μ§ μλ ν κ°μ μ΄λΌ ν μ μλ€. (μ¦, μ€νΌλ μ°λ νμ κ°μ μν©)
useTransition ν μ μνκ° λ³κ²½λλ λμ 리μ‘νΈκ° μ΄μ UIλ₯Ό νμν μμκ² ν΄μ€λ€. κ·Έλ¬λ, μΌκ΄λμ§ μμ UIκ° μ§μλλ©΄ νΌλμ μ λ°ν μ μλ€. UIκ° μ€λλ κ°μ κ³μ νμνλλΌλ λ³κ²½μ΄ λ°μνλ μ€μμ μ¬μ©μμκ² μ리λ λͺ κ°μ§ νΌλλ°±μ μ 곡νλ κ²μ΄ μ’λ€.
ex: μ μ¬μ€μΈ ν¨λμ λΆν¬λͺ λλ₯Ό μ€μ¬μ μ€λλμμ 보μ¬μ£Όλ λ±..
μ€νΌλλ‘ νν΄νμ§ μκ³ νλ©΄μ μ νμ€μμ νμνλ λ°©λ² μ€ νλ
μ΄μ UIλ₯Ό κ³μ 보μ¬μ£Όλ©΄μ isPending
trueκ° μ€μ λκ³ μ΄μ μ μΌμμ€λ¨λ λ€μ μ
λ°μ΄νΈ UIλ₯Ό λ λλ§νλ€.
μ€νΌλκ° λ ΈμΆλλ ν μ΄ μ§§λ€λ©΄ CSSλ‘ μλ°±λ°λ¦¬μ΄ νμ μ€νΌλκ° μμν λνλλλ‘ μ€μ ν΄λ΄λΌ
λ°μ΄ν°κ° λΉ λ₯΄κ² μ μ¬λλ κ²½μ° μ€νΌλλ₯Ό λ³΄μ§ λͺ»ν κ²μ΄λ€.
UI μΌλΆ μ λ°μ΄νΈλ₯Ό μ§μ°(deferred)μν¬ μ μλ ν
μ§μ°μ λ°μμμΌ μ κ°μ UIλ‘ λ λλ§ν μ μμ λκΉμ§ μ΄μ κ°μ μ¬μ©
μ¦, μ κ°μ μ§μ°λλ€.
리μ‘νΈλ μ΄μ λ²μ (μ€λλ UI)κ³Ό μ λ²μ (μ λ°μ΄νΈ μ΄ν UI)μ κ°μ λͺ¨λ μ μ§νκ³ UIμμ λ λ²μ μ λͺ¨λ μ¬μ©νλ€.
μΆμ ν κ°μ μΈμλ‘ useDeferredValueλ₯Ό νΈμΆ
μ΄ ν μ valueλ₯Ό μΆμ ν΄μ valueκ° μ΄μ κ°μμ μ κ°μΌλ‘ λ³κ²½λλ©΄ ν μ λ κ°μ€ νλλ₯Ό λ°νν μ μλ€.
리μ‘νΈκ° μ κ°μ μ¬μ©ν΄ μ UIλ₯Ό μ±κ³΅μ μΌλ‘ λ λλ§νκ³ μμ μ»΄ν¬λνΈ μ€ λ λλ§μ΄ μΌμμ€λ¨λκ±°λ μ§μ°λ μμμ΄ μλ€λ©΄ ν μ΄ μ κ°μ λ°ννκ³ , 리μ‘νΈλ UIλ₯Ό κ°±μ νλ€.
리μ‘νΈκ° μ κ°μΌλ‘ λ λλ§μ λ§μΉκΈ° μν΄ μ΄λ€ νλ‘μΈμ€μ μλ£λ₯Ό κΈ°λ€λ €μΌ νλ κ²½μ°, ν μ μ΄μ κ°μ λ°ννκ³ λ¦¬μ‘νΈλ κΈ°μ‘΄ κ°μ μ¬μ©ν΄ UIλ₯Ό νμνλ€.(μ΄μ λμμ λ©λͺ¨λ¦¬μμμ μ κ°μ μ¬μ©ν΄ UI μμ μ μν)
Transitionμ μ΄λ―Έ νμλ μ½ν μΈ (μμ: ν 컨ν μ΄λ)λ₯Ό μ¨κΈ°μ§ μμ λ§νΌλ§ βλκΈ°βν©λλ€. λ§μ½ Posts νμ κ° μλ κ²½μ° Transition μ μ΄λ₯Ό βλκΈ°βνμ§ μμ΅λλ€.