ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡ Π²Π°Ρ, ΠΊΠΎΠ»Π»Π΅Π³ΠΈ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ Π»ΡΠ±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ! Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π² ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΡΠΊΡΠΎΠ΅Ρ ΡΠΊΡΡΡΡΠ΅ ΠΆΠ΅ΠΌΡΡΠΆΠΈΠ½Ρ Redux β ΡΠ΅ Π½Π΅ΡΠ»ΠΎΠ²ΠΈΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΡΡΠΈΡΡ Π²Π°ΡΡ ΠΈΠ³ΡΡ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π² React. π ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ Π»ΠΈ Π²Ρ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΎΠΊΡΠ½ΡΠ»ΠΈΡΡ Π² Π²ΠΎΠ΄Ρ Redux, ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΡΡΠ΅ΡΡ ΡΠ΄ΠΈΠ²ΠΈΡΡΡΡ ΡΡΠΈΠΌ ΠΌΠ°Π»ΠΎΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΡΠΌ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΡΡΠ½ΡΠΌ!
1. ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ Redux: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅: Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π· Redux, ΠΊΠ°ΠΊ ΡΠΈΠΌΡΠΎΠ½ΠΈΡ. ΠΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΠ΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ? ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ Redux! π οΈ ΠΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠ°ΠΊ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ Π»ΠΈΡΠ½ΠΎΠΌ Π΄ΠΈΡΠΈΠΆΠ΅ΡΠ΅, ΡΡΠΊΠΎΠ²ΠΎΠ΄Ρ ΠΎΡΠΊΠ΅ΡΡΡΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΠ½ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π΄Π²Π΅ΡΠΈ Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π±Π΅ΡΡΠΎΠ²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ .
const loggingMiddleware = store => next => action => { console.log('Dispatching action:', action); return next(action); };
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ°. ΠΡΠΎΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ Π² ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΏΠΎΠΌΠΎΠ³Π°Ρ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΠΌ ΡΡΡ ΡΠΈΠΌΡΠΎΠ½ΠΈΡ ΠΈ Π³Π°ΡΠΌΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Redux Middleware!
2. ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ Immer: ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠ°ΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠ΅
ΠΡ , Π²Π΅ΡΠ½Π°Ρ Π±ΠΎΡΡΠ±Π° Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ! ΠΠ΅ Π±ΠΎΠΉΡΠ΅ΡΡ, Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΠΌΠΌΠ΅Ρ. π Immer ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π²ΠΎΠ»ΡΠ΅Π±Π½ΡΡ ΠΏΠ°Π»ΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΡΠ΅Π»ΡΠ½ΡΠΉ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠΏΡΡ. ΠΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ β ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠ° Immer ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠΎΠΌβ¦