κΈ°λ₯ μ μμ²νκ±°λ λ²κ·Έλ₯Ό λ³΄κ³ νμκ² μ΅λκΉ?
λ λ€/λ²κ·Έ
νμ¬ νλμ 무μμ
λκΉ?
ν΄λμ€ κ΅¬μ± μμλ₯Ό ν¨μ κ΅¬μ± μμ(νν¬ ν¬ν¨)λ‘ λ§μ΄κ·Έλ μ΄μ
νλ λμ μλΉν μ±λ₯ μ νλ₯Ό λ°κ²¬νμ΅λλ€. νΈλ¦¬ ꡬ쑰μ μΌλΆμΈ κ΅¬μ± μμ( TreeNodeComponent
)κ° μμ΅λλ€. νΈλ¦¬ ν¬κΈ°μ λ°λΌ μλ°± κ°μ μΈμ€ν΄μ€κ° νμλ μ μμ΅λλ€.
PureComponentμμ ν¨μ κ΅¬μ± μμλ₯Ό λννλ©΄ κ΄μ°°λ "λ λλ§ μκ°"μ΄ ν¬κ² λ¨μΆλμμ΅λλ€. (~160msμμ ~60msκΉμ§)
μ±μ΄ μλ°± λ λλ§ TreeNodeComponent
Aμ tree-structure
. μμ νλͺ©μ΄ μ
λ°μ΄νΈλλ©΄ λͺ¨λ μ§κ³ νμ νλͺ©μ μ‘°μ ν΄μΌ ν©λλ€.
νλ‘μ νΈ: https://github.com/thomasnordquist/MQTT-Explorer
μμλλ λμμ 무μμ
λκΉ?
κΈ°λ₯ κ΅¬μ± μμμ ν΄λμ€ κ΅¬μ± μμ κ°μ μ±λ₯μ΄ λΉμ·ν©λλ€.
μ΄λ€ λ²μ μ Reactμ μ΄λ€ λΈλΌμ°μ /OSκ° μ΄ λ¬Έμ μ μν₯μ λ°μ΅λκΉ?
OSX
ν¬λ‘¬ 73 / μ μ 5.0.5
λ°μ 16.8
νμ΄νμ€ν¬λ¦½νΈ λ° μΉν©
PureComponentμμ ν¨μ κ΅¬μ± μμλ₯Ό λννλ©΄ κ΄μ°°λ "λ λλ§ μκ°"μ΄ ν¬κ² λ¨μΆλμμ΅λλ€. (~160msμμ ~60msκΉμ§)
TreeNodeComponent
λ λλ§νλ λ° λΉμ©μ΄ λ§μ΄ λλ κ²½μ° μμλ©λλ€. React.PureComponent
λ μνμ΄ λ³κ²½λμ§ μμ κ²½μ° μ‘°κΈ°μ ꡬμ λ©λλ€.
ν΄λμ€ κ΅¬μ± μμλ₯Ό ν¨μ κ΅¬μ± μμ(νν¬ ν¬ν¨)λ‘ λ§μ΄κ·Έλ μ΄μ νλ λμ μλΉν μ±λ₯ μ νλ₯Ό λ°κ²¬νμ΅λλ€.
React.Component
λ₯Ό νμ₯νλ ν΄λμ€μμ ν¨μ κ΅¬μ± μμλ‘ μ΄λνλ©΄ μ±λ₯ μ νκ° λ°μνλ€λ λ§μμ΄μ κ°μ? μλλ©΄ μ΄λ―Έ React.PureComponent
(λλ shouldComponentUpdate
)λ₯Ό μ¬μ© μ€μ΄μμ΅λκΉ?
React.memo
λ₯Ό μ¬μ©νμ¬ κΈ°λ₯ ꡬμ±μμμ λμΌν ꡬμ κΈμ΅ μλ―Έλ₯Ό μ»μ μ μμ΅λλ€.
React.Component
μμ shouldComponentUpdate
λ‘ λ§μ΄κ·Έλ μ΄μ
νμ΅λλ€.
"λ λλ§"μ νΌνκΈ° μν΄ React.useMemo
λ₯Ό μ¬μ©ν©λλ€.
React.memo
λ PureComponent
κ²°κ³Όλ§νΌ μ’μ κ²°κ³Όλ₯Ό μ°μΆν©λλ€. (~50-60ms)
λͺ νν ν΄ μ£Όμ μ κ°μ¬ν©λλ€.
κΈ°λ₯μ κ΅¬μ± μμ λλ ν΄λμ€ κ΅¬μ± μμ μ€ μ΄λ κ²μ΄ λ μ μνλλμ§ μμ§ λͺ»νμ΅λλ€. κΈ΄ λͺ©λ‘μλ 무μμ μ¬μ©ν΄μΌ νλμ?
κ°μ₯ μ μ©ν λκΈ
TreeNodeComponent
λ λλ§νλ λ° λΉμ©μ΄ λ§μ΄ λλ κ²½μ° μμλ©λλ€.React.PureComponent
λ μνμ΄ λ³κ²½λμ§ μμ κ²½μ° μ‘°κΈ°μ ꡬμ λ©λλ€.React.Component
λ₯Ό νμ₯νλ ν΄λμ€μμ ν¨μ κ΅¬μ± μμλ‘ μ΄λνλ©΄ μ±λ₯ μ νκ° λ°μνλ€λ λ§μμ΄μ κ°μ? μλλ©΄ μ΄λ―ΈReact.PureComponent
(λλshouldComponentUpdate
)λ₯Ό μ¬μ© μ€μ΄μμ΅λκΉ?React.memo
λ₯Ό μ¬μ©νμ¬ κΈ°λ₯ ꡬμ±μμμ λμΌν ꡬμ κΈμ΅ μλ―Έλ₯Ό μ»μ μ μμ΅λλ€.