Redux ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ middleware
ΠΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΉ middleware Π΄Π»Ρ Redux
ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊ, Π΄ΡΡΠ·ΡΡ. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠΈΠ΅ middleware Π² Redux ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Redux-middleware Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ middleware ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ?
Π‘Π°ΠΌΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ middleware Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ-ΡΠ°ΠΊΠΈ ΡΡΠ°ΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ»ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π’ΠΎ Π΅ΡΡΡ, ΠΏΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π² Redux. Redux-middleware ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΊΡΠ΅Π½Π°. ΠΠ°Π»Π΅Π΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Ρ Π½ΠΈΠΌΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ Π² ΡΠ΅Π΄ΡΡΡΠ΅Ρ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ middleware Π² Redux ΠΈΠΌΠ΅Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΡΠ΄.
ΠΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ Logger Π΄Π»Ρ Redux
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ logger, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π²Π΅ΡΡ store. Π€ΡΠ½ΠΊΡΠΈΡ logger Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ next, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dispatch. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ next Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ Π² Π½Π΅Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ action. ΠΠ²ΡΡΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌ ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ES5.
Π ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ:
1. ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ store
2. ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ action
3. ΠΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ next ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ action Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΅Π³ΠΎ ΡΠ΅Π΄ΡΡΡΠ΅ΡΡ
4. Π‘Π½ΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ store
5. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ next(action) ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ logger
Π£ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΡΠΊΡΠ΄Π° Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ logger Π²Π΄ΡΡΠ³ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ store, ΡΡΠ½ΠΊΡΠΈΡΠΌ next ΠΈ action?Β» ΠΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ applyMiddleware ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ logger ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ applyMiddleware Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ.
Π ΠΊΠΎΠ΄Π΅ Π²ΡΡΠ΅ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ console.groupCollapsed() ΠΈ console.groupEnd().
ΠΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ Π² Redux?
Π§ΡΠΎΠ±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ logger Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π΅ Π² ΡΡΠ½ΠΊΡΠΈΡ applyMiddleware, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ redux, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π² createStore.
ΠΠ°ΠΆΠ½ΠΎ! ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ΄Π΅Π»Π²Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² applyMiddleware Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ.
ΠΠΎΠ±Π°Π²Π»ΡΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ applyMiddleware ΡΠΎΠΆΠ΅ Π²Π°ΠΆΠ½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ Π±ΡΠ΄ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΠΊΡΠ΅Π½ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΡΠ΅Π΄ΡΡΡΠ΅ΡΡ.
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡ ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΆΠ΅ ΡΠ΅ΡΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ middleware
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Ρ Π½ΠΈΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Redux-middleware, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ.
1. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠΌΠΈΡΡ Ρ ΡΠΊΡΠ΅Π½ΠΎΠΌ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠΌΠΈΡ resolve, ΡΠΎ Π΅Π³ΠΎ ΠΎΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ action.
2. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΊΡΠ΅Π½Π°. ΠΠ°Π½Π½Π°Ρ ΠΌΠΈΠ΄Π΅Π»Π²Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΈ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ Π²Ρ Ρ Π½Π΅ΠΉ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ.
3. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ action, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ Π² ΠΏΠΎΠ»Π΅ meta.delay Π΄Π»Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΊΡΠ΅Π½Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ middleware. ΠΠ°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ²ΠΎΡ Redux-middleware Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΡΠ΅Π½ΠΎΠ² ΠΈ ΡΡΠΎΡΠ°. Π ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ΄Π΅Π»Π²Π°Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π±ΡΠ» Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π΅Π½. Π£ΡΠΈΡΠ΅ΡΡ, Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ΄. Π£Π΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°, Π΄ΡΡΠ·ΡΡ!
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°Ρ ΠΊΠ°Π½Π°Π» Π² Telegram ΠΈ Π½Π° YouTube Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
applyMiddleware(. middlewares)
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ² Π±Π΅Π· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΈΠΏΠ° Rx. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΠΊΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, redux-thunk ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌ ΡΠΊΡΠ΅Π½ΠΎΠ² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ·ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ dispatch ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (thunks). ΠΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΈΠ΄Π»Π²Π°ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ redux-promise. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠΊΡΠ΅Π½ c Promise ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΊΡΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΌΠΈΡ Π²Π΅ΡΠ½Π΅Ρ resolve.
MΠΈΠ΄Π»Π²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ createStore ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Redux, Π½ΠΎ, ΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΡ ΠΏΡΡΠΌΠΎ Π² ΡΠ΄ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΡΠΈΡΠΈΡΡ dispatch Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ
ΠΡΠΈΠΌΠ΅Ρ: ΠΌΠΈΠ΄Π»Π²Π°Ρ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Thunk ΠΌΠΈΠ΄Π»Π²Π°ΡΠ° Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ²
Π‘ΠΎΠ²Π΅ΡΡ
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠΈΠ΄Π»Π²Π°Ρ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ:
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΄Π°Π»ΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡ ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ compose() Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΡΠΈΡΠΈΡΠ΅Π»Π΅ΠΉ ΡΡΠΎΡΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
MΠΈΠ΄Π»Π²Π°ΡΒΆ
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ (Middleware) Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Express ΠΈ Koa, ΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ ΠΌΠΈΠ΄Π»Π²Π°Ρ. Π ΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ β ΡΡΠΎ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌ Π·Π°ΠΏΡΠΎΡ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌ ΠΎΡΠ²Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΈΠ· Express ΠΈΠ»ΠΈ Koa ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ CORS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΆΠ°ΡΠΈΠ΅ ΠΈ Ρ. Π΄. ΠΡΡΡΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ/ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Express ΠΈΠ»ΠΈ Koa, ΡΠ΅ΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΡΡ ΠΎΠΆΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠΎΡΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΡΠΊΡΠ΅Π½Π° ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΡΠΊΡΠ΅Π½ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΠ΅Π΄ΡΡΡΠ΅ΡΠ°. ΠΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ API, ΡΠΎΡΡΠΈΠ½Π³Π° ΠΈ Ρ.Π΄.
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΈ ΠΏΠ°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡΡ Π²Π°ΠΌ Π²ΡΡ ΡΠΈΠ»Ρ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ². ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΠΊΠΎΠΉ ΠΈ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ²ΒΆ
Π’. ΠΊ. ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ API, ΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ΠΈ ΠΏΡΠΈΡΠ»ΠΈ. ΠΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ Ρ ΠΎΠ΄ ΠΌΡΡΠ»Π΅ΠΉ, ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ Π²Π΅Π΄ΡΡΠΈΠΉ ΠΊ ΠΌΠΈΠ΄Π»Π²Π°ΡΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΒΆ
ΠΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ² Redux β ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌΠΈ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ ΡΠΊΡΠ΅Π½, Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ. Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ².
Π Π°Π·Π²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ? ΠΠΎΠ³Π΄Π° ΡΡΠΎ-ΡΠΎ ΠΈΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°Ρ Π»ΠΎΠ³ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΠ΅Π½ ΠΈΡΠΏΠΎΡΡΠΈΠ» Π½Π°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΡΠΎΠΌΡ Ρ Redux?
ΠΠΎΠΏΡΡΠΊΠ° #1: ΠΠΎΠ³ΠΈΡΡΠ΅ΠΌ Π²ΡΡΡΠ½ΡΡΒΆ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ react-redux ΠΈΠ»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π±ΠΈΠ½Π΄ΠΈΠ½Π³, Ρ Π²Π°Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΎΡΠ° Π² Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ . ΠΠ»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ²Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ todo-ΡΠ»Π΅ΠΌΠ΅Π½Ρ:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠ΅Π½ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΡΠΎ Π΄Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡ, Π½ΠΎ Π²Ρ Π±Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·.
ΠΠΎΠΏΡΡΠΊΠ° #2: ΠΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ DispatchΒΆ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²Π΅Π·Π΄Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ store.dispatch() :
ΠΡ Π±Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ Π½Π° ΡΡΠΎΠΌ, Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·.
ΠΠΎΠΏΡΡΠΊΠ° #3: Monkeypatching Π΄Π»Ρ DispatchΒΆ
Π§ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ dispatch Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ ΡΡΠΎΡΠ°? Redux ΡΡΠΎΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠ°ΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π½Π° JavaScript, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ monkeypatch Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ dispatch :
ΠΡΠΎ ΡΠΆΠ΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ! ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡΠΊΡΠ΄Π° ΠΌΡ ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ ΡΠΊΡΠ΅Π½, ΠΎΠ½ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½. Monkeypatching Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Ρ ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΡΡΠΈΠΌ ΠΆΠΈΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .ΒΆ
ΠΡΡΠ³ΠΎΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ JavaScript-ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ window.onerror Π½Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Π Π°Π·Π²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π»Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΊΡΠ΅Π½Π°, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅ (ΠΎΡΠΈΠ±ΠΊΡ), Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠΊΡΠ΅Π½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·Π²Π°Π» ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π² ΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Sentry. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»Π΅Π³ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ Π΄Π΅ΡΠΆΠ°Π»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎ. Π ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡ , ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΡΠΈΠ»ΠΈΡ. (ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: ΠΌΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ!)
ΠΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ, ΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ, ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠΎΡΠ°:
ΠΠΎ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠΎΠΏΡΡΠΊΠ° #4: ΠΡΡΡΠ΅ΠΌ MonkeypatchingΒΆ
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π²Π½ΡΡΡΠΈ Redux, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ monkeypatching, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ²:
ΠΠΎΠΏΡΡΠΊΠ° #5: Π£Π±ΠΈΡΠ°Π΅ΠΌ MonkeypatchingΒΆ
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ!
ΠΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ (chaining). ΠΠΈΠ΄Π»Π²Π°Ρ ΠΌΠΎΠ³ Π±Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΊΡΠ΅Π½Π° next() Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ°ΡΡ Π΅Π΅ ΠΈΠ· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΠΎΡΠ°.
ΠΡΠΎ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° βwe need to go deeperβ, ΡΠ°ΠΊ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΡΠΎ. ΠΠ°ΡΠΊΠ°Π΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠ³Π°ΡΡΠΈΠΌ. Π‘ΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ES6 Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ Π³Π»Π°Π·:
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π² Redux.
ΠΠΎΠΏΡΡΠΊΠ° #6: ΠΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ²ΒΆ
ΠΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΠ΅: ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΒΆ
ΠΠ°Π½ ΠΌΠΈΠ΄Π»Π²Π°Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ:
ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Redux ΡΡΠΎΡΡ:
ΠΠΎΡ ΠΈ Π²ΡΠ΅! Π’Π΅ΠΏΠ΅ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΊΡΠ΅Π½Ρ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΠΎΡΠ°, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· logger ΠΈ crashReporter :
Π‘Π΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²ΒΆ
ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π³ΠΎΠ»ΠΎΠ²Π° Π²ΡΠΊΠΈΠΏΠ΅Π»Π° ΠΎΡ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΠΊΠ°ΠΊΠΎΠ²ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ. ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°ΡΡΠ»Π°Π±Π»Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ ΠΈ Π²Π°Ρ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π°ΡΠΈ ΡΠ΅ΡΡΠ΅ΡΠ΅Π½ΠΊΠΈ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠΌ. ΠΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π² ΡΠ°Π²Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ΠΈ Π² ΡΠ°Π²Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π·Π°Π±Π°Π²Π½Ρ.
Redux ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ middleware
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊ Express ΠΈ Koa, ΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ ΠΌΠΈΠ΄Π»Π²Π°Ρ. Π ΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ β ΡΡΠΎ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌ Π·Π°ΠΏΡΠΎΡ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌ ΠΎΡΠ²Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΈΠ· Express ΠΈΠ»ΠΈ Koa ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ CORS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΆΠ°ΡΠΈΠ΅ ΠΈ Ρ.Π΄. ΠΡΡΡΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ/ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Express ΠΈΠ»ΠΈ Koa, ΡΠ΅ΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΡΡ ΠΎΠΆΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠΎΡΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΡΠΊΡΠ΅Π½Π° ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΡΠΊΡΠ΅Π½ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΠ΅Π΄ΡΡΡΠ΅ΡΠ°. ΠΡΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ API, ΡΠΎΡΡΠΈΠ½Π³Π° ΠΈ Ρ.Π΄.
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΠ³Π»ΡΠ±Π»Π΅Π½Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΈ ΠΏΠ°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡΡ Π²Π°ΠΌ Π²ΡΡ ΡΠΈΠ»Ρ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ². ΠΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΠΊΠΎΠΉ ΠΈ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ.
Π’.ΠΊ. ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ API, ΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ΠΈ ΠΏΡΠΈΡΠ»ΠΈ. ΠΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ Ρ ΠΎΠ΄ ΠΌΡΡΠ»Π΅ΠΉ, ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ Π²Π΅Π΄ΡΡΠΈΠΉ ΠΊ ΠΌΠΈΠ΄Π»Π²Π°ΡΠ°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
ΠΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ² Redux β ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌΠΈ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ ΡΠΊΡΠ΅Π½, Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ. Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΊΡΠ΅Π½ΠΎΠ².
Π Π°Π·Π²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ? ΠΠΎΠ³Π΄Π° ΡΡΠΎ-ΡΠΎ ΠΈΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°Ρ Π»ΠΎΠ³ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΠ΅Π½ ΠΈΡΠΏΠΎΡΡΠΈΠ» Π½Π°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΡΠΎΠΌΡ Ρ Redux?
ΠΠΎΠΏΡΡΠΊΠ° #1: ΠΠΎΠ³ΠΈΡΡΠ΅ΠΌ Π²ΡΡΡΠ½ΡΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ react-redux ΠΈΠ»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π±ΠΈΠ½Π΄ΠΈΠ½Π³, Ρ Π²Π°Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΎΡΠ° Π² Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ . ΠΠ»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ²Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ todo-ΡΠ»Π΅ΠΌΠ΅Π½Ρ:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠ΅Π½ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΡΠΎ Π΄Π°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡ, Π½ΠΎ Π²Ρ Π±Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·.
ΠΠΎΠΏΡΡΠΊΠ° #2: ΠΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Dispatch
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²Π΅Π·Π΄Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ store.dispatch() :
ΠΡ Π±Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ Π½Π° ΡΡΠΎΠΌ, Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·.
Π§ΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ dispatch Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ ΡΡΠΎΡΠ°? Redux ΡΡΠΎΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠ°ΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π½Π° JavaScript, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ monkeypatch Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ dispatch :
ΠΡΠΎ ΡΠΆΠ΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ! ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡΠΊΡΠ΄Π° ΠΌΡ ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ ΡΠΊΡΠ΅Π½, ΠΎΠ½ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½. Monkeypatching Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Ρ ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΡΡΠΈΠΌ ΠΆΠΈΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
ΠΡΡΠ³ΠΎΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ JavaScript-ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅. ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ window.onerror Π½Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
Π Π°Π·Π²Π΅ Π½Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π»Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠΊΡΠ΅Π½Π°, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅ (ΠΎΡΠΈΠ±ΠΊΡ), Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΠΊΡΠ΅Π½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·Π²Π°Π» ΠΎΡΠΈΠ±ΠΊΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π² ΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Sentry. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»Π΅Π³ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ Π΄Π΅ΡΠΆΠ°Π»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎ. Π ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡ , ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΡΠΈΠ»ΠΈΡ. (ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: ΠΌΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ!)
ΠΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ, ΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ, ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠΎΡΠ°:
ΠΠΎ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠΎΠΏΡΡΠΊΠ° #4: ΠΡΡΡΠ΅ΠΌ Monkeypatching
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π²Π½ΡΡΡΠΈ Redux, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ monkeypatching, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ²:
ΠΠΎΠΏΡΡΠΊΠ° #5: Π£Π±ΠΈΡΠ°Π΅ΠΌ Monkeypatching
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ!
ΠΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ² Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ (chaining). ΠΠΈΠ΄Π»Π²Π°Ρ ΠΌΠΎΠ³ Π±Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΊΡΠ΅Π½Π° next() Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΡΠ°ΡΡ Π΅Π΅ ΠΈΠ· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΠΎΡΠ°.
ΠΡΠΎ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° βwe need to go deeperβ, ΡΠ°ΠΊ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΡΠΎ. ΠΠ°ΡΠΊΠ°Π΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠ³Π°ΡΡΠΈΠΌ. Π‘ΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ES6 Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π΄Π»Ρ Π³Π»Π°Π·:
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΌΠΈΠ΄Π»Π²Π°ΡΡ Π² Redux.
ΠΠΎΠΏΡΡΠΊΠ° #6: ΠΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠ²
ΠΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΠ΅: ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
ΠΠ°Π½ ΠΌΠΈΠ΄Π»Π²Π°Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ:
ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Redux ΡΡΠΎΡΡ:
ΠΠΎΡ ΠΈ Π²ΡΠ΅! Π’Π΅ΠΏΠ΅ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΊΡΠ΅Π½Ρ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΠΎΡΠ°, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· logger ΠΈ crashReporter :
ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π³ΠΎΠ»ΠΎΠ²Π° Π²ΡΠΊΠΈΠΏΠ΅Π»Π° ΠΎΡ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΠΊΠ°ΠΊΠΎΠ²ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ. ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°ΡΡΠ»Π°Π±Π»Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ ΠΈ Π²Π°Ρ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π°ΡΠΈ ΡΠ΅ΡΡΠ΅ΡΠ΅Π½ΠΊΠΈ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌ Redux-ΠΌΠΈΠ΄Π»Π²Π°ΡΠΎΠΌ. ΠΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π² ΡΠ°Π²Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ΠΈ Π² ΡΠ°Π²Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π·Π°Π±Π°Π²Π½Ρ.
Redux. ΠΡΠΎΡΡΠΎΠΉ ΠΊΠ°ΠΊ Π³ΡΠ°Π±Π»ΠΈ
ΠΠ½Π΅ ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ redux, Π½ΠΎ ΠΎΡΠΊΡΠ΄Π°-ΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΌΡΡΠ»Ρ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘Π²ΠΎΠΈΠΌ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ ΡΠΎΠΊΠΈΡΡΡΡΠΈΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²ΡΠ²Π°ΡΡΠΈΠΌ ΠΎΡΠΊΡΡΡΠΈΠ΅ΠΌ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ.
TL;DR: Π±Π°Π·ΠΎΠ²Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° redux ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² 7 ΡΡΡΠΎΠΊ JS ΠΊΠΎΠ΄Π°.
Π redux Π²ΠΊΡΠ°ΡΡΠ΅ (Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π½Π° Π³ΠΈΡΡ Π°Π±Π΅):
Redux β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° JavaScript.
ΠΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ/ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ (ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅Ρ/Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄) ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡ.
Π― ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ redux, ΠΎΡΠΊΡΡΠ» Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ (ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ docs, examples ΠΈ ΠΏΡΠΎΡΠ΅Π΅) ΠΈ Π²Π·ΡΠ»ΡΡ Π·Π° Π½ΠΎΠΆΠ½ΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ Delete:
β¦ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΠ³. ΠΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π½ΠΈΠ»ΡΡ ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ Π½ΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠΎ Π±Π΅Π· ΠΊΠΎΡΠ½Π΅Ρ-ΠΊΠ΅ΠΉΡΠΎΠ² ΠΎΠ½ΠΈ Π΅ΡΡ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ, ΡΠ΅ΠΌ ΡΠΎ, ΡΡΠΎ ΠΆΠ΄ΡΡ Π²Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ.
Π ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΡΠΎ, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ
ΠΠΈΡΠ΅ΠΌ redux Π·Π° 7 ΡΡΡΠΎΠΊ
ΠΠ΅ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» redux ΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΌΠ°Π»ΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΡΠ°ΠΉΠ»ΠΈΠΊ, ΡΠ°Π΄ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ github ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ π
Π’Π°ΠΊ ΡΡΡΡΠΎΠ΅Π½ redux. 18 ΡΡΡΠ°Π½ΠΈΡ Π²Π°ΠΊΠ°Π½ΡΠΈΠΉ Π½Π° HeadHunter Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Β«reduxΒ» β Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄Π΅ΡΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ Π² 7 ΡΡΡΠΎΠΊΠ°Ρ ΠΊΠΎΠ΄Π°. ΠΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ β ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ.
Π‘ ΡΡΠΈΠΌΠΈ 7 ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ TodoApp. ΠΠ»ΠΈ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎ ΠΌΡ Π±ΡΡΡΡΠ΅Π½ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ TodoApp ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ redux.
Π£ΠΆΠ΅ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Ρ Π΄ΡΠΌΠ°Π» Π±ΡΠΎΡΠΈΡΡ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½ ΡΠΎ ΡΡΠ΅Π½Ρ ΠΈ ΡΠΉΡΠΈ, Π½ΠΎ show must go on.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄.
combineReducers
ΠΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ reducer Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π·Ρ, ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ½ ΡΠ°ΠΊ:
ΠΠ°Π»ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ store ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ.
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΎΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ TodoApp Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°Π±Π°Π²Π½Π°Ρ.
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠΎΠ΄Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠ· ES6 (7/8/β):
ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ todoReducer Π² todos ΠΈ counterReducer Π² counter. Π ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ΄Π΅ Π΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. Π ΠΈΡΠΎΠ³Π΅ ΡΠ°Π·Π½ΠΈΡΡ Π½Π΅Ρ, Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π·Π½Π°ΠΊΠΎΠΌΡΡΠ΅Π³ΠΎΡΡ Ρ redux, Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π° ΡΡΠ° ΡΡΡΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠ°Π³ΠΈΠ΅ΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠ»ΡΡ ΡΠ°ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (state.todos) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (function todos()<>).
ΠΡΠ»ΠΈ Π±Ρ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π½Π° Π½Π°ΡΠ΅ΠΌ micro-redux, ΠΌΡ Π±Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°ΠΊ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΏΠ»ΠΎΡ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ 2 Β«ΠΏΠΎΠ΄-ΡΠΎΡΡΠΎΡΠ½ΠΈΡΒ», Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ (state, action), Π° Ρ ΠΎΡΠΎΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΠΏΡΠ°Π²Π΄Π°?
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡ Π²Π°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΈΡΠΏΡΠ³Π°Π΅ΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Object.entries ΠΈ ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° combineReducers Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ±ΡΠ°ΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ) ΠΈ ΡΠ°ΠΌΡΡ ΠΌΠ°Π»ΠΎΡΡΡ ΠΎΡΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΡ Π½Π° ΡΠ²ΠΎΠΉ Π²ΠΊΡΡ:
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π΄Π΅ΡΡΠ½ΡΡΡ redux Π΅ΡΡ 9 ΡΡΡΠΎΠΊ ΠΈ ΠΌΠ°ΡΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΉΡΠΈ ΠΌΠΈΠΌΠΎ Π½Π΅Ρ.
applyMiddleware
middleware Π² ΡΠ°Π·ΡΠ΅Π·Π΅ redux β ΡΡΠΎ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ dispatch ΠΈ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ. ΠΠΎΠ³ΠΈΡΡΠ΅Ρ, ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π΅Ρ Π·Π²ΡΠΊΠΈ, Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ,β¦ β ΡΡΠΎ-ΡΠΎ.
Π ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ middleware ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² createStore, Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΆΠ°Π»Π΅ΡΡ Π»ΠΈΡΠ½ΡΡ ΡΡΡΠΎΡΠΊΡ ΠΊΠΎΠ΄Π°, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° applyMiddleware, ΠΊΠΎΠ³Π΄Π° ΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ 10 ΠΌΠΈΠ½ΡΡ Π½Π° ΠΊΠΎΠ²ΡΡΡΠ½ΠΈΠ΅ Π² ΡΡΠΆΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅ΡΠΈ: createStore Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠ»Π΅ΠΌ Β«dispatchΒ». dispatch, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠΌΠ½ΠΈΠΌ (Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈΠΌ) ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π»ΠΈΡΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π°, β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅Π΄ΡΡΠ΅Ρ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (newState = reducer(state, action)).
Π’Π°ΠΊ Π²ΠΎΡ applyMiddleware Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ dispatch, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΏΠ΅ΡΠ΅Π΄ (ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅) ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ.
ΠΠΎΠ·ΡΠΌΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ middleware ΠΎΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ redux β redux-thunk
ΠΠ³ΠΎ ΡΠΌΡΡΠ» ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ
Π½ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² store.dispatch ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΆΡΡΠΊΠΎΠ²Π°ΡΠΎ, Π½ΠΎ Π΅Ρ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΠ°ΡΡ ΡΠ°Π· Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Π²Ρ ΠΎΡΠΎΠ·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π²ΡΡ Π½Π΅ ΡΠ°ΠΊ ΡΡΡΠ°ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ (Π»Π°Π΄Π½ΠΎ, ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΡΠ°ΡΠ½ΠΎ)
ΠΠ°ΠΏΠΎΠΌΠ½Ρ, ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ createStore Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ°ΠΊ
Π’ΠΎ Π΅ΡΡΡ ΠΎΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» Π°ΡΡΠΈΠ±ΡΡΡ (reducer, initialState) ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ < dispatch, getState >.
ΠΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ applyMiddleware ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡ Π±Π΅ΡΡΠΌ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ createStore ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
ΠΡΠ²ΠΎΠ΄
ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ redux ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Β«ΠΡΠ»ΠΈ Π±Π΅Π½Π·ΠΈΠ½ Π² ΡΠΈΠ»ΠΈΠ½Π΄ΡΠ΅ Π·Π°Π³ΠΎΡΠ°Π΅ΡΡΡ, Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡΒ». Π Π²ΠΎΡ ΡΠΎ, ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π½Π° ΡΡΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΡΡ Π±ΠΎΠ»ΠΈΠ΄ Π€ΠΎΡΠΌΡΠ»Ρ 1 β ΡΠΆΠ΅ ΡΠ΅ΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΠΈ.