ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ?
Π½ΠΈ ΠΎΠ΄ΠΈΠ½ / ΠΎΡΠΈΠ±ΠΊΠ°
ΠΠ°ΠΊΠΎΠ²ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅?
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Ρ Ρ
ΡΠΊΠ°ΠΌΠΈ) Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ» Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ . Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ TreeNodeComponent
), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π΅ΡΠ΅Π²Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΈΠ΄Π½Ρ ΡΠΎΡΠ½ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ².
ΠΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² PureComponent Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ Β«Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°Β». (ΠΡ ~ 160 ΠΌΡ Π΄ΠΎ ~ 60 ΠΌΡ)
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΡΠ½ΠΈ ΡΠ°ΠΊΠΈΡ
TreeNodeComponent
Π² Π²ΠΈΠ΄Π΅ tree-structure
. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅Ρ
ΠΏΡΡΠΌΡΡ
ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
ΠΡΠΎΠ΅ΠΊΡ: https://github.com/thomasnordquist/MQTT-Explorer
ΠΠ°ΠΊΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅?
Π‘ΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ React ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ / ΠΠ‘ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅?
OSX
Π₯ΡΠΎΠΌ 73 / ΠΠ»Π΅ΠΊΡΡΠΎΠ½ 5.0.5
Π Π΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ 16.8
ΠΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΡ ΠΈ Webpack
ΠΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² PureComponent Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ Β«Π²ΡΠ΅ΠΌΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°Β». (ΠΡ ~ 160 ΠΌΡ Π΄ΠΎ ~ 60 ΠΌΡ)
ΠΡΠΎΠ³ΠΎ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ TreeNodeComponent
ΡΡΠΎΠΈΡ Π΄ΠΎΡΠΎΠ³ΠΎ. React.PureComponent
Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΡΡΡΠΎΡ ΡΠ°Π½ΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Ρ Ρ ΡΠΊΠ°ΠΌΠΈ) Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ» Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠ°ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ React.Component
ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π²ΡΠ·Π²Π°Π» ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ? ΠΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ React.PureComponent
(ΠΈΠ»ΠΈ shouldComponentUpdate
)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ React.memo
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡ ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.
Π― ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Ρ React.Component
Π½Π° shouldComponentUpdate
.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ React.useMemo
ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ "ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°".
React.memo
Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ
ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΈΠ· PureComponent
. (~ 50-60 ΠΌΡ)
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΡ.
Π― Π½Π΅ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π»ΡΡΡΠ΅: ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π§ΡΠΎ ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΎΠ³ΠΎ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³
TreeNodeComponent
ΡΡΠΎΠΈΡ Π΄ΠΎΡΠΎΠ³ΠΎ.React.PureComponent
Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΡΡΡΠΎΡ ΡΠ°Π½ΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ.ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠ°ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ
React.Component
ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π²ΡΠ·Π²Π°Π» ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ? ΠΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈReact.PureComponent
(ΠΈΠ»ΠΈshouldComponentUpdate
)ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
React.memo
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡ ΠΆΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.