React
λ‘ κ°λ°μ νλ€λ³΄λ©΄ νμ λ§λ₯λ¨λ¦¬λ λ¬Έμ κ° νλμλ€. λ°λ‘ rendering
μ κ΄νκ²μ΄λ€.
νΉν λΆνμν rendering
μ μ€μ΄λκ²μ react κ°λ°μκ° νμ κ°μ Έκ°μΌν κ³Όμ μΌ κ²μ΄λ€. 본격μ μΌλ‘ rendering
μ΅μ νμ λν΄ μ΄μΌκΈ°νκΈ° μ μ rendering
μ λν΄ κ°λ¨ν μμ보λλ‘ νμ.
Rendering in REACT
React
μμ λ§νλ rendering
μ props
μ state
μ μνλ₯Ό κΈ°λ°μΌλ‘ component
λ₯Ό ꡬμ±νλ μμ
μ λ§νλ€. Rendering
μ΄ μ΄λ£¨μ΄μ§λ κ³Όμ μ λ€μκ³Ό κ°λ€.
Mount
κ° μ΄λ£¨μ΄μ§λ κ³Όμ
function component
νΈμΆ- ꡬνλΆλΆ μ€ν
Props
νμΈ,hook
μ€ν,variables
λ°function
μμ±
hook
μ λ±λ‘ν΄λ μνκ°,effect
λ±μ λ³λ λ©λͺ¨λ¦¬μ μ μ₯λμ΄ κ΄λ¦¬ return
μ€ν (rendering
μμ)render
μ€ν (κ°μ₯DOM
μμ±)commit
λ¨κ³ (μ€μ DOM
μ λ°μ)useLayoutEffect
λΈλΌμ°μ κ°paint
νκΈ°μ μuseLayoutEffect
μ λ±λ‘ν΄λeffect
κ° λκΈ°λ‘ μ€ν
μ΄λstate
,store
λ±μ λ³κ²½μ΄ μλ€λ©΄re-rendering
λλ€Paint
useEffect
mount
λμ΄ νλ©΄μ΄ κ·Έλ €μ§ μ§ν,useEffect
μ λ±λ‘ν΄λeffect
κ° λΉλκΈ°λ‘ μ€ν
Rerendering in REACT
function component
μ¬νΈμΆ- ꡬνλΆ μ€ν
return
μ€νrender
μ€ν
μλ‘μ΄ κ°μDOM
μμ± ν μ΄μ κ³Ό λΉκ΅νμ¬ λ¬λΌμ§ λΆλΆμ νμνκ³ , μ€μ λ³κ²½μ λ°μν λΆλΆμ κ²°μ νλ€commit
λ¨κ³μμ λ¬λΌμ§ λΆλΆλ§ μ€μ DOM
μ λ°μνλ€useLayoutEffect
useLayoutEffect
μ λ±λ‘λeffect
κ° λκΈ°λ‘ μ€ν
μ΄λ,state
,redux-store
λ±μ λ³κ²½μ΄ μλ€λ©΄ νλ² λ re-rendering λλ€Paint
useEffect
update
λμ΄ νλ©΄μ΄ κ·Έλ €μ§ μ§ν,useEffect
μ λ±λ‘ν΄λeffect
κ° λΉλκΈ°λ‘ μ€ν
useEffect & useLayoutEffect

useEffect
μ λ±λ‘λ effect
λ νλ©΄μ΄ κ·Έλ €μ§ μ§ν λΉλκΈ°λ‘ μ€νλλ€
useLayoutEffect
μ λ±λ‘λ effect
λ DOM
λ°μ ν νλ©΄μ΄ κ·Έλ €μ§κΈ° μ§μ λκΈ°λ‘ μ€νλλ€.
rerenderingμ΄ μΌμ΄λλ 쑰건
state
κ° λ³κ²½ λμμ λ
react
μμ μνκ΄λ¦¬λ₯Ό μν΄ μ¬μ©νλstate
κ°setState
λΌλ λ©μλλ₯Ό μ΄μ©ν΄ κ°μ΄ λ³κ²½λμμλ μ΄λ₯Ό κ°μ§νκ³rerendering
νλ€- μ λ¬λ°μ
props
κ° λ³κ²½ λμμ λ
λΆλͺ¨component
λ‘λΆν° λ°μprops
κ° λ³κ²½λμμλrerendering
μ νλ€ - λΆλͺ¨
component
κ°rendering
λ λ
Component rendering μ΅μ ν κΈ°λ²
React
μμλ μ΄λ¬ν λλΉλ₯Ό λ§κΈ°μν΄ rendering
μ μ΅μ νν μ μλ λͺκ°μ§ μ£Όμν API
λ₯Ό μ 곡ν΄μ£Όκ³ μλ€.
React.memo()
HOC(High-order component)
ννλ‘ λ΄μ₯λ λ©μλμ΄λ€. props
κ° λ³κ²½λμλμ§ νμΈνκ³ , λ³κ²½λμ§ μμμ κ²½μ° rerendering
λμ§ μλλ‘ νλ€. ν¨μν, classν component λλ€ wrappingν΄μ μ¬μ©ν μ μλ€.
2. React.Component.shouldComponentUpdate
rendering μ΄κΈ°μ νΈμΆλλ μ νμ class component life cycle λ©μλ μ΄λ€. false
λ₯Ό return
νλ©΄ rendering
μ νμ§ μλλ€. λ³΄ν΅ μ΄μ props
λ° μνκ° λ¬λΌμ‘λμ§ νμΈνκ³ , λ³νκ° μλ€λ©΄ false
λ₯Ό return
νλ€.
3. React.PureComponent
μμμ μΈκΈν props λ° μν λΉκ΅λ shoudComponentUpdate
λ₯Ό ꡬννλ κ°μ₯ μΌλ°μ μΈ λ°©λ²μ΄κΈ° λλ¬Έμ, PureComponent
λ ν΄λΉ λ‘μ§μ κΈ°λ³Έμ μΌλ‘ ꡬνν΄μ€λ€.
Props refer optimization
function component
μ κ²½μ° react
λ λμΌν μ°Έμ‘°λ₯Ό μ¬μ¬μ© ν μ μλλ‘ μ μ©ν hook
μ μ 곡ν΄μ€λ€. κ°μ²΄λ₯Ό λ§λ€κ±°λ 볡μ‘ν μ°μ°μ νλ κ²κ³Ό κ°μ μΌλ°μ μΈ λ°μ΄ν°λ₯Ό μν useMemo
μ callback
ν¨μλ₯Ό λ§λλλ° μ¬μ©ν μ μλ useCallback
μ΄λ€. νμ§λ§ λͺ¨λ ν¨μλ κ°μ²΄μ λν΄ useMemo
μ useCallback
μ μ¬μ©νκ² λ κ²½μ° λ°°λ³΄λ€ λ°°κΌ½μ΄ λ ν° μ±λ₯μ΄μκ° λ°μν μ μλ€. λ³κ²½μ 체ν¬λ₯Ό νλκ² μμ²΄κ° propsλ₯Ό λΉκ΅νλ λΉμ©μ΄ λ°μνκΈ° λλ¬Έμ΄λ€. κ΄λ ¨ λ΄μ©μ μΈκΈν Dan abramovμ νΈμ
React Forget μ λ±μ₯μκ³
리μ‘νΈ νμ΄ ReactConf 2021μμ React Forget
μ΄λΌλ μ€νμ μΈ μ»΄νμΌλ¬λ₯Ό μμ°νλ€. μ΄κ²μ μλμΌλ‘ memoization
κΈ°λ₯μ μΆκ°νλλ‘ νλκ². ν₯λ―Έλ‘μ΄ μ μ hook
μ μ’
μμ± λ°°μ΄μ memoization
ν λΏλ§ μλλΌ JSX
μμ λ°νκ°λ memoization
νλ€λ κ²μ΄λ€. λ€μ κ°λ¨ν λ§ν΄μ React Forget
μ΄ μ»΄ν¬λνΈ νΈλ¦¬ μ 체μμ λΆνμν rendering
μ ν¨κ³Όμ μΌλ‘ μ κ±°ν μ μλ€λ κ²μ λ»νλ€.
νμ¬ React Forget
μ μΆμλμ§ μμμ§λ§, μμ
μ΄ μ μ§νλκ³ μλ€λ ννΈλ μ‘΄μ¬νλ€. useEvent
κ° close λμκ³ , λ€λ₯Έ κ³³μμ 'auto memoization μΌλ‘ μΈν΄ rendering
λ¬Έμ κ° μ¬λΌμ§λ©΄ μ΄λ¨κΉμ?' λΌκ³ μΈκΈνκΈ°λ νλ€.
κ²°κ΅, κ°λ°μλ€μ΄ λ€μν ν΄κ³Ό λμμ trade-offλ₯Ό λͺ ννκ² μ΄ν΄ν΄μ μμ μ μν©μ κ°μ₯ μ ν©νκ²μ΄ 무μμΈμ§ κ²°μ νκ³ , μ΄μ κΈ°λ°ν΄μ κΈ°μ μ€νμ΄λ μλΉμ€λ₯Ό λ§λ€μ΄λκ°λ κ²μ΄ μ€μνκ²μ΄ μλκΉ.
- https://github.com/donavon/hook-flow
- https://blog.isquaredsoftware.com/2020/05/blogged-answers-a-mostly-complete-guide-to-react-rendering-behavior/