ΠΠΉ, ΡΠ΅Π±ΡΡΠ°!
ΠΡΠ°ΠΊ, Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΏΠΈΡΡ, Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Β«ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΠΌΠΎΡΠΈΒ». ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΠΎΠ·ΠΈΠ»ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π― Ρ ΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Β«ΡΠ°Π·Π΄Π΅Π»Π° ΡΠΏΡΠ°Π²ΠΊΠΈΒ», Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠΏΡΠ°Π²ΠΊΡ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Flux Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ. ΠΡΠΎ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Ρ Π΄Π²ΡΠΌΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΄ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ°Π·Π΄Π΅Π»Π° ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ·-Π·Π° Π΄ΡΡΠ³ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Β«ΠΠ΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈΒ»).
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Ρ ΠΌΠΎΠ³ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Β«ΡΠ°Π·Π΄Π΅Π» ΡΠΏΡΠ°Π²ΠΊΠΈΒ» ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ , Ρ ΠΌΠΎΠ³ Π±Ρ ΠΏΡΠΎΡΡΠΎ import helpSection from './HelpSection
ΠΈ ΠΏΠΎΠΊΠΎΠ½ΡΠΈΡΡ Ρ ΡΡΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΏΠΎΠ»ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Β«ΡΠ°Π·Π΄Π΅Π»Π° ΡΠΏΡΠ°Π²ΠΊΠΈΒ». ΠΡΠ΅, ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΠΎΡΠΊΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π² helpSection
ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Ρ
ΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ.
Π― Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ React, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠ΅Π½ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π― Π½Π΅ ΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ JSfiddle , ΠΊΠΎΡΠΎΡΡΠΉ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ (ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠ½ΠΎ, ΠΠΠ). ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ?
Π― Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² JavaScript ΠΈ React, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΌΠΎΠ³Ρ ΡΠΏΡΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π½Π°Π΄Π΅ΡΡΡ, Π½Π΅Ρ.
Π§ΡΠΎ ΠΡ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅.
(PS ΠΡΠΎΡΡΠΈΡΠ΅ Π·Π° Π΄Π²ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΡ, Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ Π½Π΅ ΠΌΠΎΠΉ ΡΠΎΠ΄Π½ΠΎΠΉ ΡΠ·ΡΠΊ ...: smile :)
ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π° Π½Π΅ Π½Π° ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ΄ΡΠ΅ React. ΠΠ° Π²ΠΎΠΏΡΠΎΡΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΠ°ΠΊΠΈΡ ΡΠ°ΠΉΡΠ°Ρ , ΠΊΠ°ΠΊ StackOverflow, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ github Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠ΄ΡΠ΅ React. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π·Π°ΠΊΡΡΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Π·Π΄Π΅ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² StackOverflow.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°, Ρ Π»ΠΈΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ
ΠΈΠ³Ρ.
http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ.
ΠΡΡΡ Π»ΠΈ ΡΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ React ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ
Ρ Π½Π΅ Π·Π½Π°Ρ? (Π― Π½Π΅ Π΄ΠΎΠ²Π΅ΡΡΡ JSfiddle, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Π΅Π½ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°Ρ, ΡΡΠ°ΡΡΠΈΡ
). ΠΡΠ»ΠΈ Π΅ΡΡΡ, ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΠΈΠΌ ΡΠΎ ΠΌΠ½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΡΠ΅Π» ΠΎΠ± ΡΡΠΎΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ»Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ-ΠΏΠΎΡΠΎΠΌΠΎΠΊ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
...
Π¨Π°Π±Π»ΠΎΠ½ ΠΏΠΎΡΠΎΠΊΠ° - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΈΠ½Π³Π»ΡΠΎΠ½Ρ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ ΡΡΡΠ»ΠΊΠ΅ Π½Π° StackOverflow ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ . ΠΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°:
Π‘ΠΈΠ½Π³Π»ΡΠΎΠ½Ρ ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄Π½Ρ (ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ) ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π Π°Π·Π½ΠΎΠ³Π»Π°ΡΠΈΡ Π·Π° ΡΠ΅ΡΡΡΡΡ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΡΡΡΡ,
(1) ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΠΈ
(2) Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ,
Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΈΠ½Π³Π»ΡΠΎΠ½.
ΠΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΌΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (ΠΈ Π΅ΡΠ΅ Π½Π΅ΠΌΠ°Π»ΠΎ Π² ΠΌΠΈΡΠ΅ React).
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π»Ρ GitHub, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² React ΠΈΠΌΠ΅ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π½ΡΡΡΠΈ Π΄Π΅ΡΠ΅Π²Π°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ . ΠΠΎΡΡΠΎΠΌΡ ΠΈΠ΄Π΅Ρ ΡΠΈΠ½Π³Π»ΡΠΎΠ½-ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π° Π² ΠΌΠΈΡΠ΅ React.
Π’ΠΎ, ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΠΊΠ΅, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ Π±Ρ Π½Π°Π·Π²Π°Π» ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ·-Π·Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° - ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ. ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π·Π°ΠΊΡΡΡΠΎΠ΅ (Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅Β») ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ½ ΠΎΠ±ΠΌΠ°Π½ΡΠ²Π°Π΅Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Π΅Π³ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΌ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ , ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½. ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π±ΠΎΠ»Π΅Π΅ 1.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ , ΠΌΡ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ React, Π½ΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΈΠ· Π½ΠΈΡ .
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ Π½Π°ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ, ΠΠΆΠ΅ΠΉΠΌΡ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²Π°ΡΡ ΡΠΎΡΠΊΡ Π·ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π½Ρ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ JSfiddle. ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅.
Π― Ρ ΠΎΡΡ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ Π±ΡΠ»ΠΎ ΡΡΠΆΠ΅Π»ΠΎ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠΏΡΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
Π― Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΈΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ... Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π»ΠΈ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ. :ΡΠ»ΡΠ±ΠΊΠ°:
ΠΡΠΈΠ²Π΅Ρ @all ,
Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΎΠΆΠΈΠ²ΠΈΡΡ ΡΡΠΎΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠΎΡΠΊΡ Π·ΡΠ΅Π½ΠΈΡ. Wir response @ 16 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ DOM Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΡΠ°Π»ΠΎΠ² . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΎΠ·Π΄Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠ΅ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠΎΠ΅ΠΌ App.jsx
ΠΊΠ°ΠΊ ΡΡΠΎ.
App.jsx
[...]
render() {
return (<SingletonOverlay></SingletonOverlay>)
}
[...]
Notification.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import NotificationComponent from './Notification.js';
import SingletonOverlay from '../general/Overlay.js';
export default class Notification extends React.Component {
constructor(props) {
super(props);
this.state = {
element: null
};
}
componentDidMount() {
this.setState({ element: ReactDOM.findDOMNode(SingletonOverlay) });
}
render() {
return this.state.element
? ReactDOM.createPortal(
<NotificationComponent>That is a notification</NotificationComponent>,
this.state.element,
)
: null;
}
}
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ - Π½Π°ΠΉΡΠΈ domNode Ρ document.findElementById
ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ
ReactDOM.findDOMNode
, ΡΡΠΎ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΏΠΎΠΊΠΈΠ½ΡΡΡ Β«React-CosmosΒ».
ΠΠΎΡΡΠΎΠΌΡ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΊΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π΄Π»Ρ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
@jimfb ΡΡΠΎΠΈΡ Π»ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ?
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ @all ,
Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΎΠΆΠΈΠ²ΠΈΡΡ ΡΡΠΎΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠΎΡΠΊΡ Π·ΡΠ΅Π½ΠΈΡ. Wir response @ 16 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ DOM Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΡΠ°Π»ΠΎΠ² . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΎΠ·Π΄Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠ΅ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠΎΠ΅ΠΌ
App.jsx
ΠΊΠ°ΠΊ ΡΡΠΎ.App.jsx
Notification.jsx
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ - Π½Π°ΠΉΡΠΈ domNode Ρ
document.findElementById
ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡReactDOM.findDOMNode
, ΡΡΠΎ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΏΠΎΠΊΠΈΠ½ΡΡΡ Β«React-CosmosΒ».ΠΠΎΡΡΠΎΠΌΡ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΊΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π΄Π»Ρ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
@jimfb ΡΡΠΎΠΈΡ Π»ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ?