Π Π°Π·Π½ΠΎΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ redux: ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ Redux для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux простыми словами? β€” Π₯Π°Π±Ρ€ Q&A

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΎΡ€ΠΌ Π²ΠΊΡƒΡ€ΠΈΠ²Π°Ρ‚ΡŒ React.
Π₯отя Π±Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡƒΠ³Π°Ρ‚ΡŒΡΡ props.

Π•ΡΡ‚ΡŒ Ρƒ тСбя React. Π­Ρ‚ΠΎ всС просто JS ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.
<Component /> — Ρ‚Π°ΠΊ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ jsx, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ React Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.
Π’Π°ΠΊ ΠΊΠ°ΠΊ структура компонСнтная, Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ части страницы.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ‚Π°ΠΊΠΎΠΉ: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обновляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… свойств — props ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° мСняСтся Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ состояния — state.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅Π±Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ дальниС Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹- Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈ Π³Π΄Π΅ приходят свойства — Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ пСрСрисовку.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Redux:
Он Π½Π΅ ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ state.

Но Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ…. И ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ — ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ эти Π΄Π°Π½Π½Ρ‹Π΅.

Когда Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ — Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΡˆΡŒ dispatch — ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция reducer Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° это — ΠΈ мСняСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ½ΠΎ. Когда Π΄Π°Π½Π½Ρ‹Π΅ замСнятся — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Propvider — Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ Ρƒ своСго Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Ρ‚ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Provider).
НапримСр:

<Provider>
   <MyComponent />//Π’ΠΎΡ‚ сюда Provider пробросит (Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚) Π½ΠΎΠ²Ρ‹Π΅ props.
</Provider>

ЗаписываСт ΠΎΠ½ это самоС глобальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… помСнялись Π΄Π°Π½Π½Ρ‹Π΅ — ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ.

mapStateToProps — ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого глобального Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ provider.
Если Ρƒ тСбя ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅:

{
   chunkStore: {},
   some: {}
}

Π’ΠΎ Ссли mapStateToProps Π²Π΅Ρ€Π½Π΅Ρ‚{store: store.chunkStore}Ρ‚ΠΎ Provider Π² props своСго ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° пробросит Ρ‚Π°ΠΊΠΎΠ΅: store: store.chunkStore. И Ρ‚Ρ‹ Π±ΡƒΠ΄Π΅ΡˆΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊ store, Π½ΠΎ Ρ‚Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ chunkStore (Π½Π΅ вСсь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅).

mapDispatchToProps — Ρ‚.ΠΊ. subscribe Π½Π΅Ρ‚, Ρ‚ΠΎ это Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ dispatch().

action — описываСт Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. КакоС ΠΏΠΎΠ»Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux?. НСдавно Π²ΠΎ врСмя ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ ΠΌΠ½Π΅ задали… | by Ivan Eroshkin

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ AndrΓ© Santiago: How Does Redux Work?

НСдавно Π²ΠΎ врСмя ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ ΠΌΠ½Π΅ Π·Π°Π΄Π°Π»ΠΈ вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Redux взаимодСйствуСт с To Do ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. МнС Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ вСсьма Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ. На самом Π΄Π΅Π»Π΅, всС, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΎ β€” это Ρ€ΡƒΡ‡ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ ΠΌΠ½Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ», ΠΈ оборотная сторона ΠΌΠΎΠ΅Π³ΠΎ Ρ€Π΅Π·ΡŽΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ.

Бидя с Ρ€ΡƒΡ‡ΠΊΠΎΠΉ Π² ​​рукС, я ΠΎΠ±Π΄ΡƒΠΌΡ‹Π²Π°Π» это.

РаньшС я испытывал ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅: ΠΎΡ‰ΡƒΡ‰Π°Π» сСбя застигнутым врасплох Π½Π° тСхничСской части ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, я ΡƒΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π» ΠΎΠ±ΠΈΠ»ΠΈΠ΅ Π±ΠΎΠΌΠ±Π°Ρ€Π΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π° ΠΌΠΎΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… тСхничСских ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ.

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ β€” это Π½Π°Π²Ρ‹ΠΊ, ΠΈ СдинствСнный способ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ β€” это ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ свои слабости Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ½Π΅ нравится ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ мСня ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ Π½Π° собСсСдованиях. Π­Ρ‚ΠΎ заставляСт мСня ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² Π°Π·Ρ‹ ΠΈ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π»ΡƒΡ‡ΡˆΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ всСм.

ВсСгда ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux?

Как описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Redux:

Redux β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ прСдсказуСмых состояний для JavaScript ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. (НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ WordPress β€” Redux Framework.)

Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах (клиСнтских, сСрвСрных ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ…), ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² сочСтании с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΊΠΎΠ΄Π°.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux вмСстС с React ΠΈΠ»ΠΈ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для View. Redux ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π» (2 ΠšΠ‘, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ зависимости).

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Redux позволяСт Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм Π²Π°ΡˆΠΈΡ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, созданных Π½Π° любом JavaScript Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, React, Meteor ΠΈΠ»ΠΈ Angular.

Redux Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ· ΠΈΠ΄Π΅ΠΈ Flux β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°, созданного ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Facebook.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Redux особСнным?

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Redux прСдоставляСт Π²Π°ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ состояниС всСго вашСго прилоТСния Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· вашСго сСрвСрного API ΠΈΠ»ΠΈ внСшнСго API, состояния Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ состояниС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ‚.Π΄.

Π­Ρ‚ΠΎ сильно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ позволяСт быстро Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста, асинхронныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΠ»ΠΈ ошибки.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия Redux β€” Store, Actions, Reducers ΠΈ Subscriptions.

Initial state

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС β€” это Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ выглядит Π² Π½Π°Ρ‡Π°Π»Π΅.

ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ ΠΏΠΎΠ»ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ консСрвы, Ρ„Ρ€ΡƒΠΊΡ‚Ρ‹, Ρ…Π»Π΅Π±, ΠΌΠΎΠ»ΠΎΠΊΠΎ ΠΈ Β«bodega catΒ».

Redux β€” ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС (Initial state)

Actions/Dispatches

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π΅Π΄Ρ‹, Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½. Π‘ Redux ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ исходноС состояниС β€” это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΎΠΊΡ€ΡƒΠ³ вас.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° происходит дСйствиС(action), ΠΎΠ½ΠΎ называСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ(dispatch).

Redux β€” ДСйствия (Actions)

Reducers

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти дСйствия.

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹(Reducers)

Π Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: состояниС, установлСнноС ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ(Initial state), ΠΈ дСйствиС(Action). Π­Ρ‚ΠΎ дСйствиС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с состояниСм.

Redux β€” Π Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹(Reducer)

Store

Π£ нас Π΅ΡΡ‚ΡŒ список дСйствий(Actions) ΠΈ наш Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€(Reducers), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ наши дСйствия. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° окаТСмся Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ. Однако, Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ послСдний шаг β€” Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅(Store). Π­Ρ‚ΠΎ мСсто, Π³Π΄Π΅ содСрТится состояниС. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€ ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС.

Redux β€” Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅(Store)

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ store. getState(). Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм это, проходя Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС(action/dispatch):

Redux β€” использованиС store.getState()

Subscribe

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ(Subscribe) Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅(Store) для Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ дСйствия(Dispatch), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС.

Redux β€” Подписка Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅(Subscriptions)

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ console.log с Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ настроСниСм Β«bodega catΒ» Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΊΠ° Ρƒ PET_BODEGA_CAT происходит ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° этого дСйствия.

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux , дСйствия(Actions) ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹(Reducers), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС(Initial state) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°(Store), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ To Do ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

Initial state

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ мСсто для хранСния всСх Π·Π°Π΄Π°Ρ‡ Π² нашСм спискС. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив:

Redux β€” ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС(Initial State)

Actions/Dispatches

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ дСйствиС(Action) Π½Π° Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€(Reducer). Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° этот Ρ€Π°Π· ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ динамичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· поля Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отправляСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π² наш список. Π’ этом случаС нашС дСйствиС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² состоянии ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

Redux —ДСйствия / ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ°( Action/Dispatch)

Reducers

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€(Reducer) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ дальнСйшиС дСйствия(Action).

Redux β€” Reducer β€” Handles an Action that’s Dispatched and Alters the State

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, вызываСтся дСйствиС ADD_TODO. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ достигаСт Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Π°, ΠΎΠ½ опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΎΠ½ соотвСтствуСт ΡΠ»ΡƒΡ‡Π°ΡŽ ADD_TODO, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ значСния ΠΈΠ· action.toDo (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся строкой) ΠΈ добавляСт Π΅Π³ΠΎ Π² массив toDos:

To Do ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вмСстС с Redux

  • ПолС Π²Π²ΠΎΠ΄Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ тСкстом Β«ΠšΡƒΠΏΠΈΡ‚ΡŒ Π΅Π΄ΡƒΒ»
  • Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΒ»
  • Π—Π°Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² дСйствиС(Action), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отправляСтся Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρƒ(Reducer)
  • Π Π΅Π΄ΡŽΡΠ΅Ρ€(Reducer) Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ дСйствиС(Action) ΠΈ опрСдСляСт Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
  • Π Π΅Π΄ΡŽΡΠ΅Ρ€(Reducer) добавляСт Π΅Π³ΠΎ Π² массив toDos Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС(Initial state)
  • Π—Π°Ρ‚Π΅ΠΌ возвращаСтся состояниС

РСдакс Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ β€” Π΄ΠΎΠΊΠ»Π°Π΄ Ивана Акулова

РСдакс Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ β€” Π΄ΠΎΠΊΠ»Π°Π΄ Ивана Акулова

  • Π­Ρ‚ΠΎ – Дэн Абрамов. Π£ Π½Π΅Π³ΠΎ 27К подписчиков (это ΠΊΡ€ΡƒΡ‚ΠΎ). И Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρƒ ΠΎΠ½ сдСлал рСдакс.
    РСдакс – это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния.

  • Π“Π»Π°Π²Π½Ρ‹Π΅ отличия рСдакса ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ 1) всё состояниС прилоТСния хранится Π² СдинствСнном мСстС…

  • ΠΈ 2) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строится ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… (http://redux.js.org/docs/basics/DataFlow.html).
    ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ отличаСтся ΠΎΡ‚ MVC, Π³Π΄Π΅ Cβ€”V ΠΈ Cβ€”M ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅. ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ прилоТСния.

  • Как я ΡƒΠΆΠ΅ сказал, всё состояниС прилоТСния хранится Π² СдинствСнном мСстС. Π­Ρ‚ΠΎ мСсто называСтся «стор». НапримСр, Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€Ρƒ,..

  • …стор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ.

  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” состояниС прилоТСния нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

  • БостояниС нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: store.number += 1 β€” Π΄Π΅Π»Π°Ρ‚ΡŒ нСльзя. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ стор, Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ событиС с описаниСм измСнСния. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ store.dispatch().
    ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаётся Π² dispatch(), называСтся «экшСн» (action). Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ JavaScript-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, СдинствСнноС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β€” type.
    РСдакс Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° измСнСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ измСнСниях стора ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ прСдставлСниС.

  • Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” всС измСнСния ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая называСтся Β«Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Β» ΠΈ которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ чистой.
    Π•Ρ‰Ρ‘ Ρ€Π°Π·: экшСн β€” это событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ гСнСрируСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ dispatch().

  • Чистая функция β€” это функция, которая всСгда для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π½Π΅ измСняСт Π½ΠΈΡ‡Π΅Π³ΠΎ снаруТи сСбя.
    Бинус β€” чистая функция, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΡƒΠ³Π»Π° ΠΎΠ½Π° всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
    parseInt() β€” чистая.
    $.ajax() β€” Π½Π΅ чистая, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния.

  • ΠŸΠ΅Ρ€Π²Π°Ρ функция β€” чистая, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСняСт снаруТи.
    Вторая β€” Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° измСняСт свой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈ внСшний ΠΊΠΎΠ΄ послС Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡƒΠΆΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.
    Π’Ρ€Π΅Ρ‚ΡŒΡ β€” Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ измСняСт состояниС систСмы снаруТи сСбя (Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² консоль).

  • Π­Ρ‚Π° функция, которая ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡΠΊΡˆΠ΅Π½Ρ‹, называСтся Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€ΠΎΠΌ.
    Она ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экшСн, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ происходит Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС прилоТСния ΠΈ экшСн, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΡ‘Π», ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° экшСна измСняСт состояниС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ считаСт Π½ΡƒΠΆΠ½Ρ‹ΠΌ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ состояниС здСсь Π½Π΅ измСняСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. ВмСсто этого возвращаСтся Π½ΠΎΠ²ΠΎΠ΅ состояниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ РСдакс ΡƒΠΆΠ΅ сам замСняСт староС.

  • Π˜Ρ‚Π°ΠΊ, это Π³Π»Π°Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ рСдакса…
    (Бписок ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²: http://redux.js.org/docs/introduction/ThreePrinciples.html)

  • …ΠΈ согласно Π½ΠΈΠΌ рСдакс-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ строится ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΉ схСмС.
    Вопрос: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с сайд-эффСктами?

  • Π‘Π°ΠΉΠ΄-эффСкты β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ измСняСтС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π΄Π΅Π»Π°Π΅Ρ‚Π΅ запрос Π½Π° сСрвСр, ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π»ΠΎΠ³.

  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² этой схСмС сайд-эффСктам Π½Π΅Ρ‚ мСста. ЕдинствСнноС мСсто, Π³Π΄Π΅ происходят измСнСния β€” это Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€, Π° ΠΎΠ½ обязан Π±Ρ‹Ρ‚ΡŒ чистой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

  • На ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ middleware. ΠœΠΈΠ΄Π»Π²Π΅ΠΉΡ€ находится ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ диспатчит ΡΠΊΡˆΠ΅Π½Ρ‹ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ события) ΠΈ Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€ΠΎΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π² Π½ΠΎΠ²ΠΎΠ΅ состояниС), пропускаСт Ρ‡Π΅Ρ€Π΅Π· сСбя всС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΡΠΊΡˆΠ΅Π½Ρ‹, мСняСт ΠΈΡ… (Ссли считаСт Π½ΡƒΠΆΠ½Ρ‹ΠΌ) ΠΈ отправляСт дальшС β€” ΠΈΠ»ΠΈ Π½Π΅ отправляСт. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±Ρ‹Ρ‚ΡŒ чистой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π΅ обязан β€” ΠΈ поэтому ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ сайд-эффСкты Π²Ρ€ΠΎΠ΄Π΅ запросов Π½Π° сСрвСр ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

  • На самом Π΄Π΅Π»Π΅ ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅.

  • ЀактичСски, ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€ β€” это просто функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ стор, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экшСн ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ с Π½ΠΈΠΌ.
    ΠœΠΈΠ΄Π»Π²Π΅ΠΉΡ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании стора. createStore ΠΈ applyMiddleware β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ рСдакса.
    Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свой ΠΌΠΈΠ΄Π΄Π»Π²Π΅ΠΉΡ€ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сайд-эффСктами β€” слишком слоТно. ВмСсто этого ΠΌΡ‹ посмотрим Π½Π° Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ. К слову, ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ сообщСством ΠΈ Π½Π΅ входят Π² поставку рСдакса.

  • Π•ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сайд-эффСктов. Π― знаю Π΄Π²Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” это redux-thunk, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹, создавая ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с рСдаксом, ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ.
    Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½? ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ рСдакс ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с экшСнами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСны простыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€ redux-thunk Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ Π²ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,..

  • …Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вмСсто простых ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ²…

  • β€¦Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Когда Π²Ρ‹ задиспатчитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, redux-thunk Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π΅Ρ‘ ΠΈ пСрСдаст Π² Π½Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ dispatch стора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ смоТСтС Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ thunk-Π°ΠΌΠΈ.

  • Или Π²ΠΎΡ‚ Ρ‚Π°ΠΊ, Ссли вынСсти созданиС экшСна Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’Π°ΠΊΠΎΠ΅ вынСсСниС, кстати, β€” стандартный шаблон Π² РСдаксС, ΠΈ функция, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π°Ρ экшСн, называСтся экшСн-криэйтор.

  • Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с redux-thunk? МоТно Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ нСсколько экшСнов подряд, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³Π°ΡƒΡ‚ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ стор.

  • МоТно Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ ΡΠΊΡˆΠ΅Π½Ρ‹ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ±Π΅ΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ. МоТно Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ dispatch β€” ΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС стора, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаётся Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.
    Redux-thunk ΡƒΠ΄ΠΎΠ±Π΅Π½ для простых сайд-эффСктов. Когда Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТный ΠΏΠΎΡ‚ΠΎΠΊ сайд-эффСктов, ΠΎΠ½ становится Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½. Π’ этом случаС пригоТдаСтся redux-saga.

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ redux-saga? Π’ΠΎΠΎΠ±Ρ‰Π΅, сага β€” это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΉ с Π±Π΅ΠΊΠ΅Π½Π΄Π°.
    Redux-saga β€” это Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сайд-эффСктов. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ redux-thunk-ΠΎΠΌ, Π²Ρ‹ создаётС сагу, которая собираСт всю Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΡŒ сСбя. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ thunk-ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡ… диспатчитС, саги Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ стартС прилоТСния ΠΈ ΠΊΠ°ΠΊ Π±Ρ‹ Β«Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ„ΠΎΠ½Π΅Β». Π‘Π°Π³ΠΈ ΡΠ»ΡƒΡˆΠ°ΡŽΡ‚ всС ΡΠΊΡˆΠ΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ диспатчит стор, ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.
    И Ρƒ саг Π² рСдаксС Π΄Π²Π° прСимущСства ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с thunk-Π°ΠΌΠΈ:
    β€” Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слоТныС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сайд-эффСктов
    β€” И ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ
    Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ выглядит сага.

  • ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ старый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π»ΠΎΠ³ΠΈΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ thunk-Π°? Π”Π°Π²Π°ΠΉΡ‚Π΅ помСняСм Π΅Π³ΠΎ Π½Π° сагу.

  • Π§Ρ‚ΠΎ мСняСтся?
    β€” Ѐункция становится Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ
    β€” ΠŸΡ€ΡΠΌΡ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° нСпрямыС, Ρ‡Π΅Ρ€Π΅Π· call(); dispatch() замСняСтся Π½Π° put()
    β€” Π‘Ρ‚ΠΈΠ»ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² мСняСтся Π½Π° синхронный (Π±Π΅Π· ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ²) β€” ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΡ‚ это позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ слоТныС асинхронныС запросы

  • На ΡΠΊΡˆΠ΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ двумя способами. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” простой: ΠΌΡ‹ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ сагу ΠΈ просим redux-saga Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ экшСн LOGIN_REQUESTED.

  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π±ΠΎΠ»Π΅Π΅ слоТный. ΠœΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΠ΄ саги Π² бСсконСчный Ρ†ΠΈΠΊΠ» ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ yield take('LOGIN_REQUESTED'). Когда сага Π½Π°Ρ‡Π½Ρ‘Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π΄ΠΎ этой строки, остановится ΠΈ Π½Π΅ продолТится Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ сгСнСрируСтся экшСн LOGIN_REQUESTED.

  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ позволяСт Π»ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько экшСнов. Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠ΄ Π½Π° мСстС многоточия выполнится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ANOTHER_ACTION, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π» LOGIN_REQUESTED.

  • Π’Π°ΠΊ саги ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Они Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ сразу послС Π²Ρ‹Π·ΠΎΠ²Π° createStore().
    ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° с сагами

  • БизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°

  • Π‘ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ всё просто.

  • БизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ β€” ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€Π°ΠΌ!
    ΠŸΠΎΡ‡Π΅ΠΌΡƒ?
    β€” Π‘Π°ΠΉΠ΄-эффСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ большая Ρ‡Π°ΡΡ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ (thunk-Π°Ρ… ΠΈΠ»ΠΈ сагах), ΠΈ Ρ‚Π°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΌΠΈΠ΄Π»Π²Π΅ΠΉΡ€Π°Ρ…. Π•ΡΡ‚ΡŒ смысл пСрСнСсти ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ бизнСслогику Ρ‚ΡƒΠ΄Π°
    β€” ΠœΠΈΠ΄Π»Π²Π΅ΠΉΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊΠΎ всСму стору, Π° Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Ρ‹ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ части
    β€” МоТно Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ нСсколько экшСнов
    Π•Ρ‰Ρ‘ ссылки:
    Question: Where to put business logic / validations?
    Recommendations for best practices regarding action-creators, reducers, and selectors

  • Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° этой схСмС бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² этом Ρ‡Ρ‘Ρ€Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… open-source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° рСдаксС. Π Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Ρ‹ Π² Π½Ρ‘ΠΌ максимально простыС, …

  • …Π° экшСн-криэйторы слоТныС ΠΈ содСрТат всю Π»ΠΎΠ³ΠΈΠΊΡƒ.

  • ВСстированиС

  • Π§Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² РСдаксС? ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ экшСн-крийэторы Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ просто. АсинхронныС β€” слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ функция, слоТно. Π Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Ρ‹ β€” просто.
    (Как Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: экшСн-криэйторы, асинхронныС экшСн-криэйторы, Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Ρ‹.)

  • Π― расскаТу ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ саги. Π‘Π°Π³ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто.

  • ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ этот слайд?
    Π‘Π°ΠΌΡ‹ΠΉ ΠΊΠ°ΠΉΡ„ β€” Π²ΠΎΡ‚ Π² этих Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… функциях.

  • call($.ajax) Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ $.ajax Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ описаниС Π²Ρ‹Π·ΠΎΠ²Π° Π² Π²ΠΈΠ΄Π΅ простого JS-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Благодаря этому для тСстирования достаточно ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· deepEqual.

  • Π’ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΡ‚ сагу…

  • β€¦ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто.

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ сСрвСра, ΠΌΡ‹ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π΅Π³ΠΎ Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€.
    И ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ $.ajax ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ этим запрос Π½Π° сСрвСр, ΠΎΡ‡Π΅Π½ΡŒ просто, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с описаниСм Π²Ρ‹Π·ΠΎΠ²Π°.

  • Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·: ΠΌΡ‹ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ² AJAX-запроса…

  • …и просто сравниваСм Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ.
    Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈ с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ экшСнов. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сага сгСнСрируСт экшСн LOGIN_SUCCESS, ΠΌΡ‹ просто сравниваСм Ρ‚Ρƒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Ρ€Π½ΡƒΠ» Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ.

  • Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΠ»ΠΎΡΡŒ Π² Π΄ΠΎΠΊΠ»Π°Π΄
    Ducks
    redux-devtools
    redux-devtools-extension

  • Reselect
    ДокумСнтация

  • andrewngu/sound-redux
    Hashnode/mern-starter

  • Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠΌΠ½ΠΈΡ‡ΠΊΠ°ΠΌΠΈ.

  • Бпасибо!
    twitter.com/iamakulov

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Redux

1- Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux?

Π’ 2013 Π³ΠΎΠ΄Ρƒ, Facebook сказал, Ρ‡Ρ‚ΠΎΒ AngularJS Ρƒ GoogleΒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈ тяТСлый, поэтому Π² этом Π³ΠΎΠ΄Ρƒ ΠΎΠ½ΠΈ прСдставили ReactJS сообщСству программистов. Но ReactJS являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±ΠΈΠ»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для создания Component ΠΈ отобраТСния Π΄Π°Π½Π½Ρ‹Ρ…Β Component Π½Π° интСрфСйсС, ReactJSΒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм прилоТСния. НСдолго послС этого,Β Facebook прСдставил Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒΒ Javascript с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌΒ FluxΒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм прилоТСния, ΠΈ являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ созданной для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈΒ React.

Π’ Ρ‚ΠΎ врСмя,Β Dan Abramov ΠΈΠ·ΡƒΡ‡Π°Π»Β Flux Ρƒ Facebook ΠΈ язык ELM. На Π½Π΅Π³ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎ влияниС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ELM, ΠΈ ΠΎΠ½ Π²ΠΈΠ΄Π΅Π» ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρƒ Flux. Π’ 5/2015 Dan Abramov объявил Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌΒ Redux, ΠΎΠ½Π° основана Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅Β ELMΒ ΠΈ устраняСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΒ Flux.

ELM

ELM являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ языком программирования (Functional Programming Language), с большим влияниСм ΠΎΡ‚Β Haskell, ΠΈ Π±Ρ‹Π» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ Π²Β JavaScript. Помимо схоТСсти с Haskell, самая ярковыраТСнная Ρ‡Π°ΡΡ‚ΡŒ Ρƒ ELM это Π΅Π³ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (ELM Architecture), данная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ Π²Π΅Π± прилоТСния Π½Π° языках Π²ΠΈΠ΄Π°Β FPL (Functional Programming Language) Π±ΠΎΠ»Π΅Π΅ простым способом.

ПослС появлСния,Β Redux Π²Ρ‹Π·Π²Π°Π»Π° Π±ΡƒΡ€Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сообщСства React ΠΈ Π΄Π°ΠΆΠ΅Β Facebook ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»Β Dan Abramov Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΒ Redux ΠΈΒ FluxΒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ ReduxΒ Π±ΠΎΠ»Π΅Π΅ популярСн ΠΈ ΡˆΠΈΡ€ΠΈΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Flux vs Redux:

Π’ ΠΏΠ»Π°Π½Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (enduser), ΠΏΡ€ΠΈ взаимодСйствии Π½Π° интСрфСйсС прилоТСния, ΠΈΡ… интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого дСйствия. Но Π½Π° самом Π΄Π΅Π»Π΅ происходит ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ процСссов. OK, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΡƒΒ Flux ΠΈ Redux,Β Ρ‡Ρ‚ΠΎΠ±Ρ‹ большС ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΎ этот процСсс.

2- АрхитСктура Flux

АрхитСктура FluxΒ Π±Ρ‹Π»Π° Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ прСдставлСна Bill Fisher ΠΈ Jing Chen Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΒ Facebook F8 Π² 2014 Π³ΠΎΠ΄Ρƒ. Данная идСя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»Π° модСль MVVM (Model View — View Model) ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡˆΠΈΡ€ΠΈΠΊΠΎ использован Π΄ΠΎ этого с понятиСм «ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…» (unidirectional data flow).

ДСйствия (actions) ΠΈ события (events) Π² Flux ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π·Β «ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ схСму» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

  • USER INTERFACE β€” action β€”> DISPATCHER β€” action β€”> STORES β€” notify changes β€”> USER INTERFACE

НиТС являСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹Β FLUX:

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ выполняСт дСйствиС Π½Π° интСрфСйсС (НапримСр Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ). БоздаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β Action, это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ хранящий Ρ‚Π°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ: Π²ΠΈΠ΄ дСйствия, мСсто происхоТдСния, врСмя, ΠΊΠΎΠΎΡ€Π΄Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (для событий ΠΌΡ‹ΡˆΠΈ), Π² ΠΊΠ°ΠΊΠΎΠ΅ состояниС (state) мСняСтся,. .

// Action object example:
{
  type: 'ADD_TODO',
  payload: {
    title: 'Do something.',
    priority: 'HIGH',
    completed: false
  }
}

Части Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅Β FLUX:

VIEW: это иСрархичСская композиция (hierarchical composition) Ρƒ React Component.

ACTION: это чистый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ созданный для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ связанной с событиСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (НаТатиС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π½Π° интСрфСйсС,..), ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ:Β  Π²ΠΈΠ΄ дСйствия, мСсто происхоТдСния, врСмя, ΠΊΠΎΠΎΡ€Π΄Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π² ΠΊΠ°ΠΊΠΎΠ΅ состояниС (state) мСняСтся,..

DISPATCHER: ЕдинствСнная Ρ‚ΠΎΡ‡ΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Action Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

STORE: Store ΠΏΡ€ΠΈΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΊΒ Action, управляСт Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ состояниСм прилоТСния. StoreΒ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ action для ΠΎΡ‚Π²Π΅Ρ‚Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΒ USER INTERFACE.

3- АрхитСктура Redux

ReduxΒ ΠΈΠ·ΡƒΡ‡ΠΈΠ» Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Flux, Π½ΠΎ отбросил Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ слоТности.

  • Redux Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ понятиС DISPATCHER.
  • Redux ΠΈΠΌΠ΅Π΅Ρ‚ СдиствСнный STORE вмСсто Ρ€Π°Π·Π½Ρ‹Ρ…Β STORE ΠΊΠ°ΠΊ ΡƒΒ Flux.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹Β ActionΒ Π±ΡƒΠ΄ΡƒΡ‚ приняты ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ STORE.

НиТС являСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹Β REDUX:

Части Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ REDUX:

VIEW PROVIDER: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚Β View Framework для рСгистрации с STORE. ΠŸΡ€ΠΈ этом,Β View Framework ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒΒ React ΠΈΠ»ΠΈΒ Angular,…

ACTION: это чистый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ созданный для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ связанной с событиСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (НаТатиС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π½Π° интСрфСйсС,..), ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ:Β  Π²ΠΈΠ΄ дСйствия, мСсто происхоТдСния, врСмя, ΠΊΠΎΠΎΡ€Π΄Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π² ΠΊΠ°ΠΊΠΎΠ΅ состояниС (state) мСняСтся,. .

STORE: УправляСт состояниСм прилоТСния ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ dispatch(action).

MIDDLEWARE: (ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС) ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ способ взаимодСйствия с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Action ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΒ STOREΒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ REDUCER. Π’Β MiddlewareΒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ задания ΠΊΠ°ΠΊ запись ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ², ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ошибок, созданиС «Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… запросов» (asynchronous requests), ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° (dispatch) Π½ΠΎΠ²Ρ‹Ρ…Β action,…

REDUCER: (Π Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€) Π­Ρ‚ΠΎ чистая функцая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π½ΠΎΠ²ΠΎΠ΅ состояниС с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: REDUCERΒ Π½Π΅ мСняСт состояниС прилоТСния, вмСсто этого ΠΎΠ½ создаСт копию Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния ΠΈ мСняСт Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ состояниС.

Когда, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Redux / WAYUP

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, благодаря Ρ‡Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π²Π΅Ρ€ΡΡ‚Π°Π»ΡŒΡ‰ΠΈΠΊΠ°ΠΌΠΈ Β Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ встаСт вопрос: Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π° Ρ‡Ρ‚ΠΎ – Π½Π΅Ρ‚, Π·Π°Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅ эта ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. РазумССтся, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° эти вопросы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± этом Ρ‚ΠΎΠΆΠ΅ мноТСство. Но ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π² этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² нСобходимости использования Redux, Π² ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… Π΅Π³ΠΎ вострСбованности ΠΈ Π΅Π³ΠΎ особСнностях.

НСкоторыС Π΅Π³ΠΎ Π»ΡŽΠ±ΡΡ‚, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ – ΡƒΠΆΠ΅ Π½Π΅ сильно, Π½ΠΎ сколько мастСров – ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈ ΠΌΠ½Π΅Π½ΠΈΠΉ. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… связями Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ слоТновато Π΄ΠΎ появлСния Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Redux. Но Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ΠΎΠΌ шаблонов программирования Flux Facebook, Redux ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для управлСния состояниСм Π΄Π°Π½Π½Ρ‹Ρ… Π² прилоТСниях JavaScript. Π₯отя ΠΎΠ½ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ React, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ с успСхом ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Π³ΠΎ с ΠΈΠ½Ρ‹ΠΌΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Β jQuery, Angular ΠΈΠ»ΠΈ Vue.

ΠŸΡ€ΠΈ ΠΎΡ‡Π΅Π½ΡŒ нСбольшом Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ (ΠΎΠΊΠΎΠ»ΠΎ 2 ΠšΠ‘, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ) Redux Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ прямой доступ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ прилоТСния Π±Π΅Π· нСобходимости ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ props (Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹) Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’ этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Redux Π³Π»ΡƒΠ±ΠΎΠΊΠΎ укорСнился Π² концСпциях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π²Π΅Π±-мастСру Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, описания интСрфСйса сайта.

Когда ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Redux

Π—Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл подсказываСт, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ смысла ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ постоянно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½ΠΈΡ…, вСдь ΠΈΡ… ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ самыС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ блСстящиС инструмСнты для самых Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Но Ρ€Π°Π·Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ своСго состояния? Π—Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ΅Π½ этот Π²ΠΎΡ‚ самый инструмСнт для управлСния Π΄Π°Π½Π½Ρ‹ΠΌ состояниСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°?

НС ΠΏΠΎΠΉΠΌΠΈΡ‚Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚Π½ΠΎ, React Π²Π΅Π»ΠΈΠΊ ΠΈ ΠΌΠΎΠ³ΡƒΡ‡ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ этим Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ рассматривали ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ React ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ использовали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° интСрфСйса (Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎ сути). Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится Π±ΠΎΠ»Π΅Π΅ слоТным, с большим количСством Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², использованиС всСго лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для управлСния всСм этим «массивом», объСмом Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ослоТнСнным дСйством. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎ, Π΄Π°ΠΆΠ΅ нСудобств ΠΈ излишнСй трудоёмкости.

И ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Redux способСн ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя; ΠΎΠ½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ слоТности, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΈΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прилоТСниях. Если Ρƒ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² React, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… React Ρ‚Π°ΠΊΠΎΠ², Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ props (Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹) Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Π’ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, постоянно измСняСмыми ΠΈ сохраняСмыми Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ мноТСствСнныС связи – Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ сам ΠΊΠΎΠ΄ станСт ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π΄Π°ΠΆΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ. Π’Π°ΠΌ самим, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, посмотрим Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Π½ΠΈΠΆΠ΅.

Π’ React (ΠΊΠ°ΠΊ, Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…) связь ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт), Π½Π΅ рСкомСндуСтся. React ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Ρ‚Π°ΠΊΠΎΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ связь), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ систСму событий ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Flux; ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈ появляСтся Π½Π° сцСнС Redux.

Π‘ Redux Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ всС состояния прилоТСния. Если Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ A происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния, ΠΎΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ пСрСдаСтся Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ B ΠΈ C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ A, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ эту ΡΠ°ΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°:

Π£Π²ΠΈΠ΄Π΅Π»ΠΈ? Π­Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ. Если Π±Ρ‹ наши ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ взаимодСйствовали Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΌΡ‹ создали Π±Ρ‹ ΡƒΡΠ·Π²ΠΈΠΌΡƒΡŽ ΠΈ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ Π±Π°Π·Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с мноТСством ошибок. Redux Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, мСняСт Π΅Ρ‘ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅Ρ‚.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ A отправляСт измСнСния своСго состояния Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΈ Ссли ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ B ΠΈ C Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± этих измСнСниях состояния, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… являСтся бСсшовной.

Помимо своСй основной миссии, Redux прСдоставляСт ΠΈ мноТСство ΠΈΠ½Ρ‹Ρ… прСимущСств ΠΏΡ€ΠΈ своСм использовании. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° основныС Ρ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сами ΠΏΠΎ сСбС особо Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ срСди ΠΏΡ€ΠΎΡ‡ΠΈΡ…:

  • ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

ИмСя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ источник Π΄Π°Π½Π½Ρ‹Ρ… (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅), Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² становится ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с синхронизациСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π΄Π°Π½Π½Ρ‹Ρ… этого самого Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°) с дСйствиями ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями прилоТСния.

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ работоспособности

Redux ΠΈΠΌΠ΅Π΅Ρ‚ строгиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠΎΠ΄. БоотвСтствСнно ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ, это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обСспСчиваСт прСдсказуСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ.

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° тСстирования

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ Π² Redux Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ с Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ написания тСстируСмого ΠΊΠΎΠ΄Π°: Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ нСбольшиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСзависимыми.

Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ ΠΈ всС просто. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слоТноС – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Redux ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ±ΠΎ всСм ΠΏΡ€ΠΎΡ‡Π΅ΠΌ. Но Ρ‚Π°ΠΊ Π»ΠΈ это Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ? Π§Ρ‚ΠΎ Ссли ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности, ΠΊΠΎΠ³Π΄Π° Redux всС ΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½?

Когда Redux ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ читатСлям Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π½ΠΎ ΠΌΡ‹Β  всС Ρ€Π°Π²Π½ΠΎ упомянСм ΠΎΠ± этом. НС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux. Иногда ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈ вовсС Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ этого. Если ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· сцСнариСв Π½ΠΈΠΆΠ΅ Π²Π΅Ρ€Π΅Π½ для вас, Π²Π°ΠΌ, вСроятно, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Redux:

  • Π’Ρ‹ ΠΈ ваши Π΄Ρ€ΡƒΠ·ΡŒΡ (ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ) ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ способ совмСстного использования ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ состояния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Π˜Π½Ρ‹ΠΌΠΈ словами, Π²Π°ΠΌ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано в ΠΊΠ°ΠΊΠΎΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ/ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ/ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.
  • Π’Ρ‹ всС Π΅Ρ‰Π΅ ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² React ΠΈΠ»ΠΈ любом ΠΈΠ½ΠΎΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅. Redux Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π΅Π½ ΠΈ Π±Π΅Π· знания, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ React Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТновато.
  • Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π² основном ΠΈΠ· простых дСйствий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ измСнСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Β Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Redux. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
  • Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ событиями Π½Π° сторонС сСрвСра (SSE) ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π²Π΅Π±-сайтов, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½ΠΎ с измСняСмым состояниСм.
  • Если планируСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прСдставлСния.

Нашли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своС, Ρ‚ΠΎΠ³Π΄Π° с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Redux ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ. И Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, какая Ρ€Π°Π±ΠΎΡ‚Π° сайта ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ВсС зависит ΠΎΡ‚ ΠΈΡ… слоТности, ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΡΡ‚ΠΈ. Но Ρ‡Ρ‚ΠΎ касаСтся самого Redux, Ρ‚ΠΎ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΡ€ΠΈ своСм вСсС ΠΎΠΊΠΎΠ»ΠΎ 2 ΠšΠ‘ ΠΈΠΌΠ΅Π΅Ρ‚ вСсьма нСпростыС возмоТности.

Redux Π² частях ΠΈ ΠΏΠΎΠ΄ Π»ΡƒΠΏΠΎΠΉ

ДСйствия (actions)

Π­Ρ‚ΠΎ просто события, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· прилоТСния Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹, Π²Ρ‹Π·ΠΎΠ² API ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. КаТдоС дСйствиС Π² Redux ΠΈΠΌΠ΅Π΅Ρ‚ свойство type, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ описываСт Ρ‚ΠΈΠΏ дСйствия, Π° Ρ‚Π°ΠΊΠΆΠ΅ Β«Π²Π°ΠΆΠ½ΡƒΡŽΒ» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСйствия (actions.js) Π² Ρ€Π°Π±ΠΎΡ‚Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° GitHub.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ дСйствиС Π² любом мСстС прилоТСния, Redux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ dispatch(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отправляСт дСйствия Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Redux, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния (dispatch. js)

Π Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ (Reducer)

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Redux Π½Π΅ позволяСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², сохраняСмых Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ dispatch() для этого. Ѐункция dispatch() просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ состояниС, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ мСняСт Π΅Π³ΠΎ … Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ Π½ΡƒΠΆΠ½Ρ‹ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ (Reducer).

Π Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ (Reducer) – это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΎΠ΅ состояниС. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ (handle-auth.js), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС:

ΠŸΡ€ΠΈ создании Π±ΠΎΠ»Π΅Π΅ слоТных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ combineReducers(). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ всС Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΠΎΠ΄ΠΈΠ½ список Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (index-reducer.js), Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою Ρ‡Π°ΡΡ‚ΡŒ состояния прилоТСния, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ состояния отличаСтся Β ΠΈ являСтся ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ написаны с чистыми функциями, особСнности ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ:

  • Они Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² сСти ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π˜Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния зависят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
  • Π˜Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ нСизмСняСмыС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡ… Π½Π΅ стоит ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° сСрдцС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Redux. Π­Ρ‚ΠΎ СдинствСнный источник истины, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся всС состояния прилоТСния ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт доступ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², дСйствий ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ рСгистрации записСй. Π›ΡŽΠ±ΠΎΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ состояниС Β Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄ΡŽΡΠ΅Ρ€ΠΎΠ². И Π²ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΠΊΠΎΠ΄ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (create-store.js)

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Redux

Если Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΊΡ€ΠΎΠΌΠ΅ всСго Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Redux Π±Ρ‹Π» основан Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ даст яркоС ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Redux Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ способСн Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚. Π‘Π΅Π· понимания цСлостности Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ слоТно ΠΈ относится такая ΠΌΡ‹ΡΠ»ΡŒ ΠΊΠΎ всСм срСдам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ‚Π°ΠΊΠΈΠ΅ Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования»?

  • ΠœΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ «чистыС», ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса.
  • ΠœΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚Π° (map), Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ (filter).
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ вмСстС, Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
  • БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ массивы.
  • ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния ΠΊΠΎΠ΄Π° Π½Π΅Π²Π°ΠΆΠ΅Π½

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя написаниС Π±ΠΎΠ»Π΅Π΅ простых, ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. БлСдуя этой схСмС Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ,  тСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ΡΡ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°Π»Ρ‹ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, это Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π² использовании. Π’ΠΎΡ‚ ΠΈ поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² любоС мСсто, Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ситуаций, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ большС ΠΊΠΎΠ΄Π°. Но ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания понятий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса. И это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Ρ… понятий.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²Π΄Π°. Redux являСтся большой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ состояниСм прилоТСния. И Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΏΡ€Π°Π²Π΄Π° ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ свою ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ заслуТил.Β  Но Ρ‡Ρ‚ΠΎ особСнно ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсным, Ρ‡Ρ‚ΠΎ Redux ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ примСняСтся Π² Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΊΠ°ΠΊ WordPress, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ RedBox нашСл ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Uber ΠΈ Twitter.Β  И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€Π°Π²Π΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Redux Π½Π΅ слишком-Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅, Π² основном, простыС дСйствия ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) Π½Π° сторонС сСрвСра, вСроятно, Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Redux; ΠΈΡ… дСйствия ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Но Π² любом случаС, Redux – ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌ, ΠΊΠΎΠΌΡƒ нравится React; Ссли ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с React ΠΈ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Π² Π½Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ всСгда, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ Redux ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Но Ρ‚ΡƒΡ‚ ΡƒΠΆ, ΠΊΠΎΠΌΡƒ ΠΈ Ρ‡Ρ‚ΠΎ Π±Π»ΠΈΠΆΠ΅, Π° Ρ„Π°ΠΊΡ‚Ρ‹ – ΠΎΠ½ΠΈ просто Π΅ΡΡ‚ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ redux, Ссли я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для своСго прилоТСния react?

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅Π΄Π°Π²Π½ΠΎ я Π½Π°Ρ‡Π°Π» Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ react (ΠΊΠ°ΠΊ ΠΈ любоС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Мой вопрос Π² Ρ‚ΠΎΠΌ, Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ redux? Π― имСю Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ нСпосрСдствСнно Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² состоянии. (Новый для react, redux. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ моя Ρ‚ΠΎΡ‡ΠΊΠ° зрСния)

javascript

database

reactjs

firebase

react-redux

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


Mrnd Β  Β 

16 января 2019 Π² 08:17

3 ΠΎΡ‚Π²Π΅Ρ‚Π°


  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… React-Navigation ΠΈ нСпосрСдствСнным состояниСм Redux

    Допустим, Ρƒ мСня Π΅ΡΡ‚ΡŒ коллСкция, состоящая ΠΈΠ· 3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΌΠΎΠ΅ΠΌ Tab-Navigator ΠΈΠ· React-Navigation , которая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Redux . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих 3 экранов TN ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ список Π΄Π°Π½Π½Ρ‹Ρ… своСго собствСнного ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Redux для: fetchCollection ΠΈΠ· ΠΎΠ½Π»Π°ΠΉΠ½-Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ запускС…

  • ИспользованиС redux Π² React Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Aurelia

    Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Aurelia для своСго клиСнтского прилоТСния. Однако ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я использовал react для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… экранов. РСализация redux Π² клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠ½Π΅ показалось это ΠΎΡ‡Π΅Π½ΡŒ слоТным, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ redux ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частях Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚,…



4

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ состояниями, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Redux, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (хотя ΠΎΠ½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅: Π΄Π°Π½Π½Ρ‹ΠΌΠΈ).

Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ сначала ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ….

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ области. Π’Π΅ΠΏΠ΅Ρ€ΡŒ это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

По ΠΌΠ΅Ρ€Π΅ услоТнСния вашСго прилоТСния Π²Π°ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… вашСго прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, Π²Π°ΠΌ, вСроятно, придСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΅Π΅ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, Π½Π° страницС профиля ΠΈ Ρ‚. Π΄.).

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° React, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ (Ссли Π²Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ React) Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ.

ΠžΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ состояниС Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Π½ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π΅ΠΌ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ΠΎ ошибкам ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста вашСго прилоТСния.

Redux-это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ раздСляСтС Π²ΠΎ всСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ясным ΠΈ чистым, создавая глобальноС состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступно Π² любом мСстС вашСго прилоТСния (срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ).

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Saraband Β  Β 

16 января 2019 Π² 10:27



1

Redux-это инструмСнт государствСнного управлСния. Redux — это состояниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΎ находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² памяти. Π­Ρ‚ΠΎ Π½Π΅ сопоставлСниС 1:1 с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши прСдставлСния отправляли дСйствия, Π° Π·Π°Ρ‚Π΅ΠΌ обновляли состояниС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСдставлСния ΠΌΠΎΠ³Π»ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° эти измСнСния Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Redux состояниС вашСго прилоТСния хранится Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΈΠ· этого Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Prathmesh Kadam Β  Β 

16 января 2019 Π² 09:10



0

БущСствуСт нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux ΠΏΡ€ΠΈ использовании Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Π²Ρ‹ Π½Π΅ сохранили Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΠ΅ состояниС Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΠ΅ состояниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ мСню ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Nikita Malyschkin Β  Β 

16 января 2019 Π² 08:24



ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

БСрвСрная сторона JWT для ΠΌΠΎΠ΅Π³ΠΎ прилоТСния react-redux

Π― Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ с react ΠΈ redux . Π― ΠΌΠ½ΠΎΠ³ΠΎ искал, Π½ΠΎ всС, Ρ‡Ρ‚ΠΎ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ, — это server-side rendering , Π½ΠΎ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ этого (ΠΏΠΎΠΏΡ€Π°Π²ΡŒΡ‚Π΅ мСня, Ссли я ошибаюсь). Π― Ρ…ΠΎΡ‡Ρƒ Π²ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ: МоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ react-redux…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ … ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π² React Native Redux?

Π― ΡƒΡ‡ΡƒΡΡŒ Π½Π° React Native Redux. Но я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ …ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΈΠ»ΠΈ … государство. Мой ΠΊΠΎΠ΄ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π° Ρ‚Π°ΠΊΠΎΠ² … const defaultState = { … }; export default (store = defaultState, action)…

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Mapbox GL с React ΠΈ Redux?

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ React ΠΈ Redux для создания своСго прилоТСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ Mapbox GL Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состояния Π² ΠΌΠΎΠ΅ΠΌ Redux, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ состояниС ΠΊΠ°Ρ€Ρ‚Ρ‹. Π§Ρ‚ΠΎ…

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… React-Navigation ΠΈ нСпосрСдствСнным состояниСм Redux

Допустим, Ρƒ мСня Π΅ΡΡ‚ΡŒ коллСкция, состоящая ΠΈΠ· 3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΌΠΎΠ΅ΠΌ Tab-Navigator ΠΈΠ· React-Navigation , которая ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Redux . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих 3 экранов TN ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ список Π΄Π°Π½Π½Ρ‹Ρ… своСго…

ИспользованиС redux Π² React Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Aurelia

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Aurelia для своСго клиСнтского прилоТСния. Однако ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я использовал react для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… экранов. РСализация redux Π² клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠ½Π΅ показалось…

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ notifcation Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ reactjs, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ react-redux-notify

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ react-redux-notify для отобраТСния ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для своСго прилоТСния. Π― слСдовал всСм инструкциям, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² ΠΈΡ… Ρ€Π΅ΠΏΠΎ Github….

Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ react redux ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° DB Π²Π½Π΅ прилоТСния

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, скаТСм, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ инструмСнта ETL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ прилоТСния react-redux. Как…

Как Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ гостям ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС redux?

Π’ ΠΌΠΎΠ΅ΠΌ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ пСсни ΠΈΠ· своСго плСйлиста spotify для воспроизвСдСния Π½Π° Π²Π΅Ρ‡Π΅Ρ€ΠΈΠ½ΠΊΠ΅. Π― Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ гости (Π½Π΅Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ)…

Redux ΠΌΠ°Π³Π°Π·ΠΈΠ½ для многостраничного прилоТСния react

Π― создаю сайт элСктронной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠΈ, содСрТащий Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. ΠœΠ΅ΠΆΠ΄Ρƒ этими катСгориями Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ сцСнариСв react ΠΈ redux java для создания…

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π»ΠΈ я контСкст NEW API ΠΈΠ»ΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Redux?

Π£ мСня Π΅ΡΡ‚ΡŒ learn React, ΠΈ я научился ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Context API, Π½ΠΎ я ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ new context api, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΈΠ·ΡƒΡ‡ΠΈΠ» React с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ своСго Ρ€ΠΎΠ΄Π° старого курса (ΠΊΠΎΠ½Π΅Ρ† 2017 Π³ΠΎΠ΄Π°), я Π½Π΅ знаю,. ..

Главная страница — Русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Redux Saga

Π›ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Redux Saga

​​​ ​​ ​​ ​​ ​​ ​​ ​​​

redux-saga β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты (Ρ‚.Π΅. Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ «Π³Ρ€ΡΠ·Π½Ρ‹Π΅» дСйствия, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ доступ ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠΌΡƒ ΠΊΠ΅ΡˆΡƒ), ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Ρ‘Π³ΠΊΠΈΠΌΠΈ Π² тСстировании ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ошибками.

МоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ это Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ saga β€” это ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты. redux-saga β€” это ΠΌΠΈΠ΄Π»Π²Π°Ρ€ redux, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΈΠ· основного прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… дСйствий redux, ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ redux прилоТСния ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΈΡΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ дСйствия redux.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ES6, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эти асинхронныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π»Π΅Π³ΠΊΠΈΠΌΠΈ для чтСния, написания ΠΈ тСстирования. (Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с этим, здСсь Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылки для ознакомлСния) Π’Π΅ΠΌ самым, эти асинхронныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ выглядят, ΠΊΠ°ΠΊ ваш стандартный синхронный JavaScript-ΠΊΠΎΠ΄. (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ async/await, Π½ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… возмоТностСй, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π½Π°ΠΌ)

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ использовали redux-thunk, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ваши Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ redux thunk, Π²Ρ‹ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ΡΡŒ Π² Π°Π΄Ρƒ колбэков, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши асинхронныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΈ ваши дСйствия ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ чистыми.

$ npm install --save redux-saga

ΠΈΠ»ΠΈ

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдоставлСнныС UMD сборки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² <script> Π½Π° HTML страницС. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ эту ΡΠ΅ΠΊΡ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ интСрфСйс для извлСчСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сСрвСра ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ. (Для краткости, ΠΌΡ‹ просто ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠΎΠ΄ запуска экшСна.)

class UserComponent extends React.Component {

...

onSomeButtonClicked() {

const { userId, dispatch } = this.props

dispatch({type: 'USER_FETCH_REQUESTED', payload: {userId}})

}

. ..

}

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ диспатчит дСйствиС Π² Π²ΠΈΠ΄Π΅ простого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. ΠœΡ‹ создадим saga, которая ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ всС дСйствия USER_FETCH_REQUESTED ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API для извлСчСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

sagas.js

import { call, put, takeEvery, takeLatest } from 'redux-saga/effects'

import Api from '...'

​

function* fetchUser(action) {

try {

const user = yield call(Api.fetchUser, action.payload.userId);

yield put({type: "USER_FETCH_SUCCEEDED", user: user});

} catch (e) {

yield put({type: "USER_FETCH_FAILED", message: e.message});

}

}

​

function* mySaga() {

yield takeEvery("USER_FETCH_REQUESTED", fetchUser);

}

​

​

function* mySaga() {

yield takeLatest("USER_FETCH_REQUESTED", fetchUser);

}

​

export default mySaga;

Для запуска Saga, ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΅Π΅ ΠΊ Redux Store, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠΈΠ΄Π»Π²Π°Ρ€ redux-saga.

main.js

import { createStore, applyMiddleware } from 'redux'

import createSagaMiddleware from 'redux-saga'

​

import reducer from './reducers'

import mySaga from './sagas'

​

const sagaMiddleware = createSagaMiddleware()

const store = createStore(

reducer,

applyMiddleware(sagaMiddleware)

)

​

sagaMiddleware.run(mySaga)

​

Π’Π°ΠΊΠΆΠ΅ сущСствуСт сборка umd redux-saga, доступная Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ dist/. ΠŸΡ€ΠΈ использовании umd-сборки, redux-saga доступна ΠΊΠ°ΠΊ ReduxSaga Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ window.

вСрсия umd ΠΏΠΎΠ»Π΅Π·Π½Π°, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Webpack ΠΈΠ»ΠΈ Browserify. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π΅ΠΉ, нСпосрСдствСнно ΠΈΠ· unpkg.

Доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сборки:

Π’Π°ΠΆΠ½ΠΎ! Если ваш Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ES2015, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°Π½ΡΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· babel plugin) ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ runtime, Ρ‚Π°ΠΊΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ этот. Runtime Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎ redux-saga:

import 'regenerator-runtime/runtime'

import sagaMiddleware from 'redux-saga'

$ git clone https://github.com/redux-saga/redux-saga.git

$ cd redux-saga

$ npm install

$ npm test

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ (ΠΏΠΎΠΊΠ°) ΠΈΠ· Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Redux.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ счётчика

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° счётчика.

counter-vanilla

Π”Π΅ΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ JavaScript ΠΈ UMD-сборки. ВсС исходники находятся Π² index.html.

Для запуска ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, просто ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ index.html Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π’Π°ΠΆΠ½ΠΎ: ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. ΠŸΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ послСдниС вСрсии Chrome/Firefox/Edge.

counter

Π”Π΅ΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ webpack ΠΈ высокоуровнСвоС API takeEvery.

$ npm run counter

​

$ npm run test-counter

cancellable-counter

Π”Π΅ΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ API для дСмонстрации ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ.

$ npm run cancellable-counter

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠΎΡ€Π·ΠΈΠ½ΠΎΠΉ

$ npm run shop

​

$ npm run test-shop

$ npm run async

​

$ npm run test-async

Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (с горячСй ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ webpack)

Redux-Saga с TypeScript Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ DOM. Iterable ΠΈΠ»ΠΈ ES2015.Iterable. Если ваш target это ES6, Ρƒ вас, скорСС всСго, ΡƒΠΆΠ΅ всё настроСно, ΠΎΠ΄Π½Π°ΠΊΠΎ для ES5 Π²Π°ΠΌ потрСбуСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» tsconfig.json ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ с опциями компилятора.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Redux-Saga с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ logo.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ нас СТСмСсячными поТСртвованиями ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π½Π°ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. [Π‘Ρ‚Π°Ρ‚ΡŒ ΠΌΠ΅Ρ†Π΅Π½Π°Ρ‚ΠΎΠΌ]

​​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​

Π‘Ρ‚Π°Π½ΡŒ спонсором ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ свой Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ Π² нашСм README Π½Π° GitHub с ссылкой Π½Π° ваш сайт. [Π‘Ρ‚Π°Ρ‚ΡŒ спонсором]

​​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​

A Designer’s Guide — Smashing Magazine

Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ сила Redux Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ управлСния государством? Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux? Π”Π°Π²Π°ΠΉΡ‚Π΅ углубимся Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Redux ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ свои Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ нСдостатки ΠΈ ΠΊΠ°ΠΊ это связано с Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ.

Π’Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Redux? Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? НС Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ, поТалуйста!

  • «НСобычный бэкэнд».
  • Β«Π― ΡΠ»Ρ‹ΡˆΠ°Π» ΠΎΠ± этом, Π½ΠΎ Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ React? »
  • Β«Π›ΡƒΡ‡ΡˆΠΈΠΉ способ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниями Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React.”

Π― Π·Π°Π΄Π°Π» этот вопрос Π±ΠΎΠ»Π΅Π΅ 40 Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ. Π’Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΈΡ… Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. МногиС ΠΈΠ· Π½ΠΈΡ… Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Redux Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с React ΠΈ Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° — Β«ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм».

Но Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ это «государствСнноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Β»? Π’Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ сила Redux Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ управлСния государством? Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Redux Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ React для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈΠ»ΠΈ хотя Π±Ρ‹ Π·Π° ΠΎΠ±Π΅Π΄ΠΎΠΌ) ΠΎ Ρ‚ΠΎΠΌ, стоит Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux? Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux?

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Redux : Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ свои Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ нСдостатки, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ это связано с Π΄ΠΈΠ·Π°ΠΉΠ½.

Моя Ρ†Π΅Π»ΡŒ — ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ Π²Ρ€ΠΎΠ΄Π΅ вас. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ написали Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строчки ΠΊΠΎΠ΄Π°, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ всС Π΅Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ (ΠΈ вСсСло) ΠΏΠΎΠ½ΡΡ‚ΡŒ Redux. ΠžΠΆΠΈΠ΄Π°ΠΉΡ‚Π΅ простого английского ΠΈ ΠΊΠ°Ρ€Π°ΠΊΡƒΠ»Π΅ΠΉ — Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ абстрактных Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ².

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΏΠΎΠ΅Π·Π΄ΠΊΠ΅?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux?

На свСрхвысоком ΡƒΡ€ΠΎΠ²Π½Π΅ Redux — это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ сСбС Тизнь. Как ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· вас, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° — Β«ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ государством». Π― объясню, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм, нСсколькими Ρ€Π°Π·Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΠΎΠ·ΠΆΠ΅.На этом этапС я ΠΎΡΡ‚Π°Π²Π»ΡŽ вас с этой ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ:

Redux управляСт состояниСм, Π½ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΅ΡΡ‚ΡŒ нСсколько скрытых возмоТностСй. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π‘ΠΈΠ±ΠΈ) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎ этого Π΄Π΅Π»ΠΎ?

Redux большС касаСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ внСшнСго Π²ΠΈΠ΄Π°. Π­Ρ‚ΠΎ довольно слоТный инструмСнт, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ слоТного обучСния. ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π»ΠΈ это, Ρ‡Ρ‚ΠΎ ΠΌΡ‹, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ этого подальшС?

НСт. Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, Π²Π΅Ρ€Π½ΠΎ? Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйсы ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² дСталях .ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ ΠΎ Π΅Π³ΠΎ прСимущСствах ΠΈ послСдствиях.

Β«Π”ΠΈΠ·Π°ΠΉΠ½ — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ выглядит ΠΈ ощущаСтся. Π”ΠΈΠ·Π°ΠΉΠ½ — это Ρ‚ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Β».

— Π‘Ρ‚ΠΈΠ² ДТобс

Π§Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ Redux?

МногиС люди ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Redux для управлСния состояниСм Π² прилоТСниях React. Π­Ρ‚ΠΎ самый распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования Π² Π΄ΠΈΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅, ΠΈ Redux ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‚Π΅ аспСкты, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… React Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (ΠΏΠΎΠΊΠ°).

Однако Π²Ρ‹ скоро ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ сила Redux Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого.Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с изучСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм

Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ это «состояниС», Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ: Β«Π΄Π°Π½Π½Ρ‹Π΅Β». БостояниС — это Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ . БостояниС опрСдСляСт, Ρ‡Ρ‚ΠΎ отобраТаСтся Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ государствСнноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅? Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ аспСкта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:

  1. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ сохранСниС Π΄Π°Π½Π½Ρ‹Ρ…
  2. НазначСниС Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса
  3. ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ…

Допустим, ΠΌΡ‹ создаСм страницу Dribbble shot .КакиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° страницС? Они Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Ρ„ΠΎΡ‚ΠΎ профиля Π°Π²Ρ‚ΠΎΡ€Π°, имя, Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ GIF-Ρ„Π°ΠΉΠ», количСство сСрдСчСк, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Ρ‚. Π”.

Π”Π°Π½Π½Ρ‹Π΅ Π½Π° страницС снимков Dribbble (большой ΠΏΡ€Π΅Π²ΡŒΡŽ)

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС эти Π΄Π°Π½Π½Ρ‹Π΅ с сСрвСра Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΈ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΡ… ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ. Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Нам Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ части этих Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π° самом Π΄Π΅Π»Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. НапримСр, ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ URL-адрСс Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ профиля Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ src Ρ‚Π΅Π³Π° HTML img :

  
  

НаконСц, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ измСнСния Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ добавляСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ снимку Dribbble ΠΈΠ»ΠΈ добавляСт Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΡƒ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ HTML.

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡ этих Ρ‚Ρ€Π΅Ρ… аспСктов состояния являСтся большой Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈ React ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для этой Π·Π°Π΄Π°Ρ‡ΠΈ. Иногда встроСнныС срСдства Π² React Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится Π±ΠΎΠ»Π΅Π΅ слоТным, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ состояниСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ React становится всС Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ сохранСниС Π΄Π°Π½Π½Ρ‹Ρ…

Π’ React ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ (см. Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React?Β»).

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° снимка Dribbble с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (большой ΠΏΡ€Π΅Π²ΡŒΡŽ)

Если наш ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс структурирован Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π³Π΄Π΅ ΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π°Ρ€ ΠΆΠΈΠ²Π΅Ρ‚ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ . ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСров ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° поиск всСх ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для приготовлСния блюд.

Наивный способ — ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹.Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡˆΠ΅Ρ„-ΠΏΠΎΠ²Π°Ρ€ пошСл ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΠ²ΠΎΡ‰ΠΈ ΠΈ мясо прямо с Π΄Π°Π»Π΅ΠΊΠΈΡ… Ρ„Π΅Ρ€ΠΌ.

Наивный способ: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π‘ΠΈΠ±ΠΈ) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ расточитСлСн. Нам ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сСрвСр ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² — Π΄Π°ΠΆΠ΅ для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ²Π°Ρ€Π° потратят Π²ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅Π½Π·ΠΈΠ½Π° ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΡ Ρ‚ΡƒΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’ Redux ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ сохраняСм ΠΈΡ… Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ мСстС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ называСтся Β«Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Β». ПослС этого Π΄Π°Π½Π½Ρ‹Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию Π² любоС врСмя Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ поблизости Π΅ΡΡ‚ΡŒ супСрмаркСт, Π³Π΄Π΅ наши ΠΏΠΎΠ²Π°Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΡƒΠΏΠΈΡ‚ΡŒ всС ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹. Π‘ΡƒΠΏΠ΅Ρ€ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ отправляСт Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΈ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΊΠΈ ΠΎΠ²ΠΎΡ‰Π΅ΠΉ ΠΈ мяса ΠΎΠΏΡ‚ΠΎΠΌ с Ρ„Π΅Ρ€ΠΌ. Π­Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠΎΠΉΡ‚ΠΈ Π½Π° Ρ„Π΅Ρ€ΠΌΡ‹ сами!

Магазин Ρ‚Π°ΠΊΠΆΠ΅ слуТит СдинствСнным источником истины. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, Π° Π½Π΅ ΠΎΡ‚ΠΊΡƒΠ΄Π°-Π»ΠΈΠ±ΠΎ Π΅Ρ‰Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ всСго содСрТимого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Redux ΠΊΠ°ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

НазначСниС Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

Волько с React Π΅ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ извлСчСния ΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ….ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ нашСго ΠΎΡ‡Π΅Π½ΡŒ любСзного ΡˆΠ΅Ρ„-ΠΏΠΎΠ²Π°Ρ€Π° Π¨ΠΎΡ‚Π²Π΅Π»Π»Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ для всСх Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ·Π΅ΠΉ-ΠΏΠΎΠ²Π°Ρ€ΠΎΠ². Он Π΅Π·Π΄ΠΈΠ» Π½Π° Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠ΅ Π½Π° Ρ„Π΅Ρ€ΠΌΡ‹ ΠΈ Π²ΠΎΠ·ΠΈΠ» вкусности. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Β«ShotΒ» Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Dribbble, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ СдинствСнный источник истины.

Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ эффСктивСн, Ρ‡Π΅ΠΌ Π½Π°ΠΈΠ²Π½Ρ‹ΠΉ способ получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Но ΠΊΠ°ΠΊ Π¨ΠΎΡ‚Π²Π΅Π»Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ²Π°Ρ€Π°ΠΌ? Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ фактичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ элСмСнты HTML? ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠ°ΠΊ эстафСту Π² Ρ€Π΅Π»Π΅, Π½Π° всСм ΠΏΡƒΡ‚ΠΈ, ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ достигнут ΠΏΡƒΠ½ΠΊΡ‚Π° назначСния.

НапримСр, URL Π°Π²Π°Ρ‚Π°Ρ€Π° Π°Π²Ρ‚ΠΎΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ· Β«ShotΒ» Π² Β«ShotDetailΒ», Π² Β«TitleΒ» ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π² Ρ‚Π΅Π³ . Если наши ΠΏΠΎΠ²Π°Ρ€Π° ΠΆΠΈΠ²ΡƒΡ‚ Π² ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅, это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выглядит Ρ‚Π°ΠΊ:

ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· props. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ мСсту назначСния, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° ΠΏΡƒΡ‚ΠΈ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΠΈΠ΄Π½ΠΎ, Ссли Π±Ρ‹ этаТСй Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ!

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли супСрмаркСт осущСствляСт доставку ΠΎΡ‚ Π΄Π²Π΅Ρ€ΠΈ Π΄ΠΎ Π΄Π²Π΅Ρ€ΠΈ?
Π‘ Redux 1 ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ затрагивая Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

1 Если Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, это другая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ react-redux , которая ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² React. ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π° Π½Π΅ сам Redux.Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ react-redux просто выполняСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° люди ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Redux ΠΈ react-redux вмСстС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ это ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΠΈΠ· прСимущСств Redux.

ВставляйтС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Redux. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ : Π’ послСднСй вСрсии React (16.3) Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ «контСкстный» API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли это СдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Redux, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° React 16.3! ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°).

ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ…

Иногда Π»ΠΎΠ³ΠΈΠΊΠ° обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно слоТной. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ нСсколько этапов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ придСтся Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСрвСров, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ состояниС прилоТСния. Нам ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ мноТСство мСст Π² ΡˆΡ‚Π°Ρ‚Π΅ Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… условиях.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡˆΠ΅Π»ΠΎΠΌΠ»ΡΡŽΡ‰ΠΈΠΌ, Ссли Ρƒ нас Π½Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ структуры для всСй этой Π»ΠΎΠ³ΠΈΠΊΠΈ. Код Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

Redux позволяСт Π½Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Ρ‚ΡŒ . Он прСдоставляСт стандартный способ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° нСбольшиС Β«Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹Β». Π­Ρ‚ΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ слоТноС дСйствиС.

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, слСдитС Π·Π° Π½Π΅Π΄Π°Π²Π½ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ React. Как ΠΈ Π² случаС с «контСкстным» API, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии React ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ API Β«setStateΒ».Π­Ρ‚ΠΎ упростило Π±Ρ‹ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ обновлСния Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот Π½ΠΎΠ²Ρ‹ΠΉ API станСт доступным, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ большС Π½Π΅ понадобится Redux для управлСния этим аспСктом управлСния состояниСм.

РСальная сила Redux

Пока каТСтся, Ρ‡Ρ‚ΠΎ Redux — это просто Π»Π΅ΠΉΠ±Π» для React. Π›ΡŽΠ΄ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Redux для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ аспСктов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ React ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ получаСтся. Но React быстро догоняСт! ЀактичСски, Дэн Абрамов, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Redux, ΠΏΠ°Ρ€Ρƒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ присоСдинился ΠΊ основной ΠΊΠΎΠΌΠ°Π½Π΄Π΅ React Π² Facebook. Они Π±Ρ‹Π»ΠΈ заняты Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π½Π°Π΄ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π² React: контСкстный API (Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² вСрсии 16.3), ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ API извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… (продСмонстрирован Π² Ρ„Π΅Π²Ρ€Π°Π»Π΅ 2018 Π³ΠΎΠ΄Π°), Π»ΡƒΡ‡ΡˆΠΈΠΉ setState API ΠΈ Ρ‚. Π”.

Π‘Π΄Π΅Π»Π°Π΅Ρ‚ Π»ΠΈ Redux ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ?

Π£Π³Π°Π΄Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ? Π― Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π» Π²Π°ΠΌ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΌΠΎΡ‰ΡŒ Redux!

ΠœΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ Redux Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ управлСния состояниСм. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ)

Redux Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ нСскольким строгим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ΄Π°ΡŽΡ‚ Redux Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ (Π΄Π°, силу дисциплины!):

  1. ВсС Π΄Π°Π½Π½Ρ‹Π΅ (состояниС прилоТСния) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ описано ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом.Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ€ΡƒΡ‡ΠΊΠΎΠΉ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅.
  2. КаТдоС дСйствиС (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ описано ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ оставив ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ процСсс Π½Π° слСнгС Redux называСтся Β«ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° дСйствия».
  3. Π’Π°Ρˆ ΠΊΠΎΠ΄, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти сСбя ΠΊΠ°ΠΊ матСматичСская Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²Π²ΠΎΠ΄Π΅. ΠšΠ²Π°Π΄Ρ€Π°Ρ‚ 4 всСгда Ρ€Π°Π²Π΅Π½ 16 нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Ρ€Π°Π· Π²Ρ‹ Π΅Π³ΠΎ запускаСтС.

Когда Π²Ρ‹ слСдуСтС этим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, происходит Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ. Он позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство интСрСсных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π°Ρ‡Π΅ слоТно ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². 2

2 Π― собрал эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· сообщСния Дэна Абрамова Β«Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ReduxΒ» ΠΈ Π΅Π³ΠΎ Β«Π’Π΅ΠΌΠ° вопросов для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ReactΒ».

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π°Ρ функция ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ / Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ планирования Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ это Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ с самого Π½Π°Ρ‡Π°Π»Π°.Если это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΠΎ, потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ мноТСство Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ являСтся Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠΌ для бСсчислСнных ошибок.

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Redux Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС ΠΎΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π° ΠΏΠΎΡ‡Ρ‚ΠΈ прСдоставляСтся бСсплатно. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π° с Redux ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° простой страницС.

БовмСстная срСда

Если Π²Ρ‹ создаСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Google, Π³Π΄Π΅ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС Π½Π°Π΄ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Redux.Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с тяТСлой Π°Ρ‚Π»Π΅Ρ‚ΠΈΠΊΠΎΠΉ.

Google Docs (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ)

Redux позволяСт ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит, ΠΏΠΎ сСти. Π›Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ дСйствия, выполняСмыС Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ измСнСния ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит локально.

ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс

ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс — это способ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс прилоТСния. Π­Ρ‚ΠΎ заставляСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ быстрСС Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ. Π­Ρ‚ΠΎ популярная стратСгия Π² прилоТСниях, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡˆΡƒΡ‚Π΅Ρ€ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π»ΠΈΡ†Π°.

ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (большой ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр)

Π’ качСствС простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Twitter, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ сСрдСчко Π² Ρ‚Π²ΠΈΡ‚Π΅, Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ сСрвСр Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, являСтся Π»ΠΈ этот Ρ‚Π²ΠΈΡ‚ всС Π΅Ρ‰Π΅ сущСствуСт. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° нСсколько сСкунд, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ±ΠΌΠ°Π½ΡƒΡ‚ΡŒ! Он ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС Π² порядкС, ΠΈ сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ сСрдцС.

Π‘Π΅Ρ€Π΄Ρ†Π΅ Twitter (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв всС Π² порядкС.Когда Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ обновлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ фактичСский Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с сСрвСра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ сообщСниС ΠΎΠ± ошибкС.

Redux ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ оптимистичный интСрфСйс Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ измСнСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΎΡ‚ сСрвСра.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· состояния

Redux позволяСт Π»Π΅Π³ΠΊΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. ПозТС, Π΄Π°ΠΆΠ΅ Ссли ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ пСрСзагрузится, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ смоТСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ мСста, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π»ΠΎΡΡŒ.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ / Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° прогрСсса ΠΈΠ³Ρ€Ρ‹ (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Если Π²Ρ‹ создаСтС ΠΈΠ³Ρ€Ρƒ с Redux, Π²Π°ΠΌ просто понадобится Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Π° строк ΠΊΠΎΠ΄Π° для сохранСния / Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ прогрСсса ΠΈΠ³Ρ€Ρ‹, Π½Π΅ измСняя ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ .

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ систСмы

ΠŸΡ€ΠΈ использовании Redux Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Β«ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΒ» дСйствиС для обновлСния Π»ΡŽΠ±Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ практичСски всС аспСкты Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ прилоТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… каТдая функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.НапримСр, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Hyper, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», созданноС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Redux. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Β«hyperpowerΒ» добавляСт Π±Ρ€Ρ‹Π·Π³ΠΈ ΠΊ курсору ΠΈ встряхиваСт ΠΎΠΊΠ½ΠΎ. Как Π²Π°ΠΌ этот Β«Π²Π°ΡƒΒ» Ρ€Π΅ΠΆΠΈΠΌ? (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ произвСсти Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ)

Π Π΅ΠΆΠΈΠΌ Β«Π²Π°ΡƒΒ» Π² Hyper, Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. (Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ)

ΠžΡ‚Π»Π°Π΄ΠΊΠ° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Как насчСт возмоТности ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ прилоТСния? Π’Ρ‹ запускаСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ нСсколько Ρ€Π°Π· Π²ΠΏΠ΅Ρ€Π΅Π΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка, исправляСтС ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ для подтвСрТдСния.

Redux Π²ΠΎΠΏΠ»ΠΎΡ‰Π°Π΅Ρ‚ Π² Тизнь эту ΠΌΠ΅Ρ‡Ρ‚Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Redux DevTools позволяСт Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ…ΠΎΠ΄ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ прилоТСния ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π΅ΠΎ YouTube — пСрСтаскивая ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ!

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ строгих ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ примСняСт Redux? Π­Ρ‚ΠΎ сСкрСт Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²Π°.

ΠŸΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Redux DevTools Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ

АвтоматичСскиС ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС. Она Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ вспоминаСт ΠΈ описываСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° сдСлала.Π—Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π»ΠΈ ошибка снова. ΠžΡ‚Ρ‡Π΅Ρ‚ ΠΎΠ± ошибкС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ расплывчатым ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΊ насчСт этого. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС». БистСма автоматичСски отправляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° сдСлала. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ВоспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒΒ» ΠΈ смотрит, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ происходит эта ошибка. Π–ΡƒΡ‡ΠΎΠΊ Ρ€Π°Π·Π΄Π°Π²Π»Π΅Π½ Π½Π° мСстС, всС Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹!

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ Π²Ρ‹ использовали Redux Bug Reporter. Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Redux творят чудСса.

АвтоматичСскиС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

НСдостатки Redux

Π’Ρ€ΠΈ основных ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ примСняСт Redux, — ΠΏΠ°Π»ΠΊΠ° ΠΎ Π΄Π²ΡƒΡ… ΠΊΠΎΠ½Ρ†Π°Ρ…. Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹Π΅ нСдостатки.

ΠšΡ€ΡƒΡ‚Π°Ρ кривая обучСния

Π£ Redux ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ крутая кривая обучСния. ВрСбуСтся врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ Π΅Π³ΠΎ закономСрностям. НС рСкомСндуСтся ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Redux ΠΈ React ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ссли ΠΎΠ½ΠΈ для вас Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ.

Код «Boilerplate»

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях использованиС Redux ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ написаниС большСго количСства ΠΊΠΎΠ΄Π°. Часто трСбуСтся ΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ простая функция Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°. Π›ΡŽΠ΄ΠΈ Таловались Π½Π° Β«ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉΒ» ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Redux.

Π― знаю, это Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎ. Π Π°Π·Π²Π΅ я Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ Redux позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ? Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° использованиС посудомоСчной ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Π°ΠΌ придСтся ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ посуду рядами.Волько Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ прСимущСства посудомоСчной ΠΌΠ°ΡˆΠΈΠ½Ρ‹: экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° собствСнно ΠΌΡ‹Ρ‚ΡŒΠ΅ посуды, дСзинфСкция посуды ΠΈ Ρ‚. Π”. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‚ΠΎΠ³ΠΎ стоит Π»ΠΈ врСмя Π½Π° ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠ΅!

Π¨Ρ‚Ρ€Π°Ρ„ Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Redux Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·-Π·Π° Π½Π°Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Он добавляСт нСбольшиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния, ΠΈ замСдлСния Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ½ΠΈ часто ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ быстро Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ тСкст Π½Π° мобильном устройствС), ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒ вялым.

Бонус: Redux Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для React

РаспространСнноС Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Redux Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для React. ΠŸΠΎΡ…ΠΎΠΆΠ΅, Redux Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Π΅Π· React. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Redux дополняСт React нСсколькими Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ способами, ΠΊΠ°ΠΊ ΠΌΡ‹ обсуТдали Ρ€Π°Π½Π΅Π΅. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования.

Однако Π½Π° самом Π΄Π΅Π»Π΅ Redux ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ интСрфСйсными Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Angular, Ember.js ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ jQuery, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²Π°Π½ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ JavaScript.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΡ‚ΡŒ, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это, это, это ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ это. ΠžΠ±Ρ‰ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Redux ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π²Π΅Π·Π΄Π΅!

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Redux с ΡƒΠΌΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ прСимущСства Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях — Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React.

Redux Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ интСрфСйсными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. (Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Beebee) (ΠΏΡ€Π΅Π²ΡŒΡŽ Π² большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ)

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструмСнт, Redux ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ компромисс. Он прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹Π΅ нСдостатки. Π Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² — ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, стоит Π»ΠΈ Ρ‚Π°ΠΊΠΎΠΉ компромисс, ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ осознанноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Как Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹, Ссли ΠΌΡ‹ ΠΏΠΎΠΉΠΌΠ΅ΠΌ прСимущСства ΠΈ нСдостатки Redux, ΠΌΡ‹ смоТСм внСсти свой Π²ΠΊΠ»Π°Π΄ Π² принятиС этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π΄ΠΈΠ·Π°ΠΉΠ½Π°. НапримСр, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ / ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ мноТСство Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΊΠΎΠ½ подтвСрТдСния? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ оптимистичный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΏΡ€ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΉ стоимости?

ΠŸΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ прСимущСства ΠΈ ограничСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ соотвСтствСнно. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ Π‘Ρ‚ΠΈΠ² ДТобс, говоря Β«Π΄ΠΈΠ·Π°ΠΉΠ½ — это Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Β».

(rb, ra, il)

reduxjs / redux: ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ прСдсказуСмого состояния для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaScript

Redux — это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с прСдсказуСмым состояниСм для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaScript.
(НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ WordPress — Redux Framework)

Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ согласованно, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах (клиСнтских, сСрвСрных ΠΈ собствСнных) ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊΠΎ всСму, ΠΎΠ½ прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² сочСтании с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux вмСстС с React ΠΈΠ»ΠΈ с любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ прСдставлСний.
Он ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ (2 ΠšΠ‘, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ зависимости) ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ экосистСму надстроСк.

Установка

Redux Toolkit — это наш ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для написания Π»ΠΎΠ³ΠΈΠΊΠΈ Redux. Он ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ядро ​​Redux ΠΈ содСрТит ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для создания прилоТСния Redux. Redux Toolkit строится Π½Π° основС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… Π½Π°ΠΌΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π°Ρ‡ Redux, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ распространСнныС ошибки ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ написаниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Redux.

  npm install @ reduxjs / toolkit react-redux
  

Для самой основной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Redux:

  npm ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ redux
  

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. На страницС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ установкС.

ДокумСнтация

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Redux располоТСны ΠΏΠΎ адрСсу https://redux.js.org :

Экспорт PDF, ePub ΠΈ MOBI для чтСния Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ инструкции ΠΏΠΎ ΠΈΡ… созданию см. На страницС: paulkogel / redux-offline-docs.

ΠžΡ„Ρ„Π»Π°ΠΉΠ½-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ см .: devdocs

Π£Π·Π½Π°Ρ‚ΡŒ Redux

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ основам Redux

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС Redux Essentials — это ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ пособиС «свСрху Π²Π½ΠΈΠ·Β», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡ‡ΠΈΡ‚, Β«ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ReduxΒ», с использованиСм Π½Π°ΡˆΠΈΡ… послСдних Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… API ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с этого.

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС ΠΏΠΎ основам Redux

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠžΡΠ½ΠΎΠ²Ρ‹ Redux — это ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ «снизу Π²Π²Π΅Ρ€Ρ…Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡ‡ΠΈΡ‚, Β«ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ReduxΒ» ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ абстракций, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ стандартныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ использования Redux.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ

Π”Ρ€ΡƒΠ³ΠΈΠ΅ рСсурсы

  • Redux FAQ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ распространСнныС вопросы ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux, Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π Π΅Ρ†Π΅ΠΏΡ‚Ρ‹Β» docs содСрТится информация ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, тСстировании, структурировании Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π° ΠΈ сокращСнии шаблонов.
  • Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ

  • Redux ΠœΠ°Ρ€ΠΊ Эриксон ΠΈΠ· сСрии руководств «Practical Redux» дСмонстрируСт Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с React ΠΈ Redux (Ρ‚Π°ΠΊΠΆΠ΅ доступСн ΠΊΠ°ΠΊ , ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ курс Π½Π° Educative.io ).
  • Бписок ссылок React / Redux Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ сСлСкторами, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Redux ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.
  • НашС сообщСство создало тысячи связанных с Redux Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, надстроСк ΠΈ инструмСнтов.На страницС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ «ЭкосистСма» пСрСчислСны наши Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список, доступный Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Redux .

ΠŸΠΎΠΌΠΎΡ‰ΡŒ ΠΈ обсуТдСниС

#redux channel сообщСства Reactiflux Discord — это наш ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ рСсурс ΠΏΠΎ всСм вопросам, связанным с ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ использованиСм Redux. Reactiflux — ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ мСсто, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ, Π·Π°Π΄Π°Ρ‚ΡŒ вопросы ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС — ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΠΌ Ρ‚Π°ΠΌ!

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ

Redux — Ρ†Π΅Π½Π½Ρ‹ΠΉ инструмСнт для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ вашСго состояния, Π½ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΠΎΠ½ для вашСй ситуации.ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Redux Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ сказал, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ — вмСсто этого, поТалуйста, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ прСимущСства ΠΈ компромиссы Π΅Π³ΠΎ использования.

Π’ΠΎΡ‚ нСсколько совСтов ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux:

  • Π£ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  • Для вашСго государства Π½ΡƒΠΆΠ΅Π½ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ источник истины
  • Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ сохранСния всСго вашСго состояния Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΡƒΠΆΠ΅ нСдостаточно

Π”Π°, эти Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ ΠΈ расплывчаты, Π½ΠΎ Π½Π° Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вСская ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°. Π’ΠΎΡ‡ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Redux Π² своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ разная для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Redux, см .:

ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Дэн Абрамов (Π°Π²Ρ‚ΠΎΡ€ Redux) написал Redux Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ своим Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ Π½Π° React Europe ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «Горячая ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° с ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡΠΌΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ». Π•Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ управлСния состояниСм с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ API, Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ прСдсказуСмым ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.Redux позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π°, Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ прилоТСния, запись ΠΈ воспроизвСдСниС Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ со стороны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Влияния

Redux Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ΄Π΅ΠΈ Flux, Π½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ Π΅Π³ΠΎ слоТности, бСря Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎΡ‚ Elm.
Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ использовали Flux ΠΈΠ»ΠΈ Elm, для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Redux потрСбуСтся всСго нСсколько ΠΌΠΈΠ½ΡƒΡ‚.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ВсС глобальноС состояниС вашСго прилоТСния хранится Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° . ЕдинствСнный способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ состояний — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ дСйствиС , ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½.
Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ состояниС обновляСтся Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° дСйствиС, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Π½ΠΎΠ²ΠΎΠ΅ состояниС Π½Π° основС старого состояния ΠΈ дСйствия.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ {createStore} ΠΈΠ· "redux"

/ **
 * Π­Ρ‚ΠΎ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ - функция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ
 * ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ дСйствия, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Β«Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎΒ», ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ состояния.* Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°: (состояниС, дСйствиС) => newState
 *
 * БостояниС Redux Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ JS, массивы ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹.
 * Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ состояния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹
 * Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ состояния, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли состояниС измСняСтся.
 *
 * Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π΅. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅
 * ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch, Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.
 * /
function counterReducer (state = {value: 0}, action) {
  ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ (дСйствиС. Ρ‚ΠΈΠΏ) {
    case 'счСтчик / ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ':
      return {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: state.value + 1}
    case 'счСтчик / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅':
      return {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: state.value - 1}
    Π΄Π΅Ρ„ΠΎΠ»Ρ‚:
      состояниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°
  }
}

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Redux, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится состояниС вашСго прилоТСния.
// Π•Π³ΠΎ API: {subscribe, dispatch, getState}.
ΠΏΡƒΡΡ‚ΡŒ store = createStore (counterReducer)

// Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ subscribe () для обновлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° измСнСния состояния.
// ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ Π±Ρ‹ использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ привязки прСдставлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, React Redux), Π° Π½Π΅ subscribe () Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.// ΠœΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ.

store.subscribe (() => console.log (store.getState ()))

// ЕдинствСнный способ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС - ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ дСйствиС.
// ДСйствия ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ воспроизвСсти.
store.dispatch ({Ρ‚ΠΈΠΏ: 'счСтчик / ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ'})
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 1}
store.dispatch ({Ρ‚ΠΈΠΏ: 'счСтчик / ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ'})
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 2}
store. dispatch ({Ρ‚ΠΈΠΏ: 'счСтчик / ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅'})
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 1} 

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ с простыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ дСйствиями .Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ΠΎΠΌ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ состояниС всСго прилоТСния.

Π’ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Redux Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с СдинствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ сокращСния корня. По ΠΌΠ΅Ρ€Π΅ роста вашСго прилоТСния Π²Ρ‹ раздСляСтС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ Π½Π° мСньшиС Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹, нСзависимо Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ частями Π΄Π΅Ρ€Π΅Π²Π° состояний. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½ΠΎ ΠΎΠ½ состоит ΠΈΠ· мноТСства Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТной для прилоТСния счСтчика, Π½ΠΎ ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ этого шаблона Π² Ρ‚ΠΎΠΌ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ½ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ слоТных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΡƒΡ‚Π°Ρ†ΠΈΡŽ Π΄ΠΎ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅Π΅ Π²Ρ‹Π·Π²Π°Π»ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сСансы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ…, просто воспроизводя ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ дСйствиС.

Redux Toolkit, ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Redux Toolkit ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс написания Π»ΠΎΠ³ΠΈΠΊΠΈ Redux ΠΈ настройки Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π’ Redux Toolkit такая ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° выглядит Ρ‚Π°ΠΊ:

 import {createSlice, configureStore} ΠΈΠ· '@ reduxjs / toolkit'

const counterSlice = createSlice ({
  имя: 'счСтчик',
  Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС: {
    Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 0
  },
  Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹: {
    ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ: состояниС => {
      // Redux Toolkit позволяСт Π½Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ "ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽΡΡ" Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°Ρ….Π­Ρ‚ΠΎ
      // фактичСски Π½Π΅ измСняСт состояниС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Immer,
      // ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ измСнСния Π² "состоянии Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠ°" ΠΈ создаСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ
      // Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ состояниС Π½Π° основС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
      state.value + = 1
    },
    ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΎ: состояниС => {
      state.value - = 1
    }
  }
})

экспорт const {увСличиваСтся, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ} = counterSlice.actions

const store = configureStore ({
  Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€: counterSlice. reducer
})

// ВсС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΌΠ°Π³Π°Π·ΠΈΠ½
store.subscribe (() => консоль.ΠΆΡƒΡ€Π½Π°Π» (store.getState ()))

// По-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ дСйствия Π² `dispatch`, Π½ΠΎ ΠΎΠ½ΠΈ созданы для нас
store.dispatch (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ ())
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 1}
store.dispatch (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ ())
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 2}
store.dispatch (ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΎ ())
// {Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: 1} 

Redux Toolkit позволяСт Π½Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈ этом слСдуя Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ повСдСнию Redux ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΠΎΡ‡Ρ‚ΠΈ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ пСсочницу CodeSandbox. Π­Ρ‚ΠΎ интСрактивная вСрсия ΠΊΠΎΠ΄Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½.

ΠžΡ‚Π·Ρ‹Π²Ρ‹

«МнС нравится Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ с ReduxΒ»
Π¦Π·ΠΈΠ½ Π§Π΅Π½, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Flux

Β«Π― попросил ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Redux Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ обсуТдСния JS FB, ΠΈ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²ΡΠ΅ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠΎΡ…Π²Π°Π»Ρƒ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Β».
Π‘ΠΈΠ»Π» Π€ΠΈΡˆΠ΅Ρ€, Π°Π²Ρ‚ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Flux

Β«Π—Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Flux, Π½Π΅ дСлая Flux совсСм».
АндрС Π‘Ρ‚Π°Π»ΡŒΡ†, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Cycle

Бпасибо

Особая Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Π”ΠΆΠ΅ΠΉΠΌΠΈ ΠŸΡΡ‚ΠΎΠ½Ρƒ Π·Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° redux NPM.

Π›ΠΎΠ³ΠΎΡ‚ΠΈΠΏ

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° GitHub.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ придСрТиваСтся сСмантичСского управлСния вСрсиями.
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ выпуск вмСстС с инструкциями ΠΏΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ докумСнтируСтся Π½Π° страницС выпусков GitHub.

ΠŸΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΠΈ

Π Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Redux Ρ„ΠΈΠ½Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ сообщСством.
ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сдСлали это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ:

Π‘ΠΌ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ Redux, Π° Ρ‚Π°ΠΊΠΆΠ΅ постоянно растущий список людСй ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Redux.

ЛицСнзия

MIT

Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎ соврСмСнному ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ состояниСм

Redux — это ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ инструмСнт управлСния состояниСм для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaScript, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² 2015 Π³ΠΎΠ΄Ρƒ ΠΈ созданный Дэном Абрамовым ΠΈ Π­Π½Π΄Ρ€ΡŽ ΠšΠ»Π°Ρ€ΠΊΠΎΠΌ.

Redux — самоС популярноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для управлСния состояниСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах (ΠΊΠ»ΠΈΠ΅Π½Ρ‚, сСрвСр, собствСнный). Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Redux Π΄Π΅Π»Π°Π΅Ρ‚ это, — это использованиС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° redux, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обрабатываСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ состояния.

Богласно ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Redux Π±Ρ‹Π» основан Π½Π° Ρ‚Ρ€Π΅Ρ… основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ…:

  • БостояниС всСго вашСго прилоТСния хранится Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

  • Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ состояниС прилоТСния доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ дСйствиС.

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΠΎ состояний прСобразуСтся дСйствиями, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹.

Когда всС состояниС вашСго прилоТСния Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ прямой доступ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ свойств Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ).

ΠœΠ°ΡΡ‚Π΅Ρ€ Redux.

ΠšΡƒΡ€Ρ Redux

Educative Π½Π°ΡƒΡ‡ΠΈΡ‚ вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redux с React ΠΈ javascript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Π²Π΅Π±-прилоТСния.

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Redux

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…ΡƒΠΊΠΎΠ² , Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Context API , встроСнных Π² React, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ вопросом, Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ Redux для создания Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ прилоТСния для рСагирования. ΠžΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Π₯отя ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ для простого прилоТСния React, ΠΎΠ½ понадобится Π²Π°ΠΌ, ΠΊΠΎΠ³Π΄Π° ваши прилоТСния станут Π±ΠΎΠ»Π΅Π΅ слоТными.ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ API Π½Π΅ замСняСт Redux.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Context API Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ вашСго прилоТСния. Π’ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ порядок пСрСмСщСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ Redux Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСсти ΡƒΡ‡Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм состоянии ΠΈ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Π·Π°Π΄ ΠΊ этим измСнСниям.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Redux Π±ΠΎΠ»Π΅Π΅ эффСктивСн, Ρ‡Π΅ΠΌ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ React, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Context часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, хотя Context API упростил ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π±Π΅Π· использования Redux, ΠΎΠ½ Π½Π΅ являСтся ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ состояний, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ упускаСтС мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.Redux ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСвСроятно ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, тСстированиС ΠΈ отслСТиваниС вашСго состояния.

БСзусловно, Redux обСспСчиваСт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ПО. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ контСкст ΠΈ Redux нСльзя ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Redux ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ уровня ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ являСтся систСмой управлСния состояниСм, Π° контСкст — Π½Π΅Ρ‚.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Redux ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ обновляСтся состояниС Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Redux

, Syeda Aimen Batool.

. Π€ΠΎΡ‚ΠΎ Π€Π°Π±ΠΈΠ°Π½Π° Грооса Π½Π° Unsplash.

. Π― Π½Π°Ρ‡Π°Π» ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Redux нСсколько Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄, ΠΈ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ это Π±Ρ‹Π»ΠΎ для мСня ΠΎΡˆΠ΅Π»ΠΎΠΌΠ»ΡΡŽΡ‰ΠΈΠΌ.ΠžΡ‚Ρ‚ΠΎΡ‡ΠΈΠ² свои Π½Π°Π²Ρ‹ΠΊΠΈ Π² ReactJS, создав Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для чтСния ΠΊΠ½ΠΈΠ³, я направился Π² Redux, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ большС.

БСгодня я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ нСсколькими основными концСпциями Redux Π±Π΅Π· использования ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ прСдставлСний (React ΠΈΠ»ΠΈ Angular). Π­Ρ‚ΠΎ своСго Ρ€ΠΎΠ΄Π° личная Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° для использования Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π½ΠΎ ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ вмСстС!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux?

Redux — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ прСдсказуСмости состояния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ JavaScript.Π­Ρ‚ΠΎ нСзависимая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Он ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ React ΠΈ Angular, для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ управлСния состояниСм прилоТСния. Redux Π±Ρ‹Π» создан Дэном Абрамовым Π² 2015 Π³ΠΎΠ΄Ρƒ для эффСктивного управлСния слоТным состояниСм.

Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится большС, становится Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Бтановится слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π³Π΄Π΅ измСняСтся состояниС ΠΈ Π³Π΄Π΅ измСнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹. Иногда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ запускаСт Π²Ρ‹Π·ΠΎΠ² API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обновляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ модСль.Π­Ρ‚Π° модСль, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, обновляСт ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ состояниС ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΡƒΡŽ модСль ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации становится слоТно ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния состояния. Π­Ρ‚ΠΎ происходит Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° для обновлСния состояния, ΠΈ состояниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΈΠ· любого мСста Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния.

Redux пытаСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, прСдоставляя нСсколько простых ΠΏΡ€Π°Π²ΠΈΠ» для обновлСния состояния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ прСдсказуСмым. Π­Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Redux.

Redux Store:

Как ΠΌΡ‹ обсуТдали Ρ€Π°Π½Π΅Π΅, основная Ρ†Π΅Π»ΡŒ Redux — ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ прСдсказуСмоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм Π² Π½Π°ΡˆΠΈΡ… прилоТСниях.Redux достигаСт этого, имСя СдинствСнный источник истины, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ состояниСм . Π”Π΅Ρ€Π΅Π²ΠΎ состояний — это простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит всС состояниС нашСго прилоТСния. Π•ΡΡ‚ΡŒ всСго нСсколько способов взаимодСйствия с государством. И это ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈΠ»ΠΈ отслСТиваниС нашСго состояния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ основноС состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всС состояниС прилоТСния, располоТСнного Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС. Π›ΡŽΠ±Ρ‹Π΅ измСнСния, внСсСнныС Π² Π΄Π΅Ρ€Π΅Π²ΠΎ состояний, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²ΠΎ всСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это СдинствСнный источник Π΄Π°Π½Π½Ρ‹Ρ… для прилоТСния.И это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Redux.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ β„–1 — Π•Π΄ΠΈΠ½Ρ‹ΠΉ источник истины

БостояниС всСго вашСго прилоТСния хранится Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. — ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Бпособы взаимодСйствия с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ состояний:

  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ состояния
  • ΠŸΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ состояния
  • ОбновлСниС состояния

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ — это Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Π΅Ρ€Π΅Π²ΠΎ состояний ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для взаимодСйствия с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ состояний.НСт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ способа Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с состояниСм Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½ прСдоставляСт Π½Π°ΠΌ для взаимодСйствия с государством.

  • getState () — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС прилоТСния.
  • ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° (дСйствиС) — СдинствСнный способ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС — ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ дСйствиС, Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° (дСйствиС) слуТит этой Ρ†Π΅Π»ΠΈ. ΠŸΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.
  • subscribe (ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ) — Ρ†Π΅Π»ΡŒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° — ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния состояния.ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° состояниС измСняСтся, ΠΎΠ½ΠΎ вызываСтся ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ состояниС.
  • replaceReducer (nextReducer) — замСняСт Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² настоящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ для вычислСния состояния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, содСрТащСС Π΄Π΅Ρ€Π΅Π²ΠΎ состояний ΠΈ нСсколько способов взаимодСйствия с состояниСм, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС прилоТСния?

ОбновлСниС состояния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ:

ЕдинствСнный способ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС — это ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ дСйствиС. Π­Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ β„– 2 — БостояниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния

ДСйствиС — это простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript для отслСТивания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ события, происходящСго Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ особСнным, Ρ‚Π°ΠΊ это свойство «Ρ‚ΠΈΠΏΠ°», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.

  {type: "ADD_BOOK_TO_THE_CART"}  

Основная Ρ†Π΅Π»ΡŒ этого свойства — ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Redux ΠΎ происходящСм событии. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ дСйствиС. Наряду со свойством «Ρ‚ΠΈΠΏ» ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ происходящСм событии.

ДСйствия ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. РСкомСндуСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ мСньший объСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ — ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ любой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π—Π΄Π΅ΡΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ дСйствиС ΠΏΠΎ добавлСнию ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² дСйствиС, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ диспСтчСру. store.dispatch () — это функция, прСдоставляСмая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ дСйствиС для выполнСния дСйствия ΠΏΡ€ΠΎΡ‚ΠΈΠ² состояния. Redux ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ состояния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Π­Ρ‚ΠΎΡ‚ строгий способ обновлСния состояния Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ состояниС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½ΠΈ просмотром, Π½ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ сСтСвым ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ. ЕдинствСнный способ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС — это ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ дСйствиС ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ дСйствия — это простыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ JavaScript. ДСйствия ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ для Ρ†Π΅Π»Π΅ΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, состояниС ΠΈ дСйствиС Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для выполнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ состояния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти дСйствия для фактичСского обновлСния. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ чистой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β„–3.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ β„– 3 — ИзмСнСния вносятся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ чистых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π—Π΄Π΅ΡΡŒ происходит Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ. Нам Π½ΡƒΠΆΠ½Π° простая чистая функция, которая Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС прилоТСния ΠΈ дСйствиС, выполняСмоС с Π½ΠΈΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ состояниС.Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ.

Они Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ Π΅Π³ΠΎ Π΄ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ — это чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ исходноС состояниС. ВмСсто этого ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ состояниС Π² Π½ΠΎΠ²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π’ нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ состояниС для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ чистыми функциями, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

  • ΠŸΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²Π²ΠΎΠ΄Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ — ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ.
  • НСт ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов — Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Π° API Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈΠ· внСшнСго источника.
ΠŸΡ€ΠΎΡ†Π΅ΡΡ.

Если ΠΌΡ‹ соСдиним Ρ‚ΠΎΡ‡ΠΊΠΈ, Redux — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, содСрТащСС Π΄Π΅Ρ€Π΅Π²ΠΎ состояний ΠΈ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для взаимодСйствия с состояниСм. ЕдинствСнный способ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° — ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ дСйствиС ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π° для выполнСния Π·Π°Π΄Π°Ρ‡ Π½Π° основС Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… дСйствий. ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ дСйствиС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ состояниС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.Π’ этом вся ΡΡƒΡ‚ΡŒ Redux.

ΠŸΠΎΡ‚ΠΎΠΊ обновлСния состояния Π² Redux

Π§Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚?

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡ‚ΠΎΠ³ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ.

  • Redux — ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ прСдсказуСмого состояния с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ
  • Π”Π΅Ρ€Π΅Π²ΠΎ состояний — ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит всС состояниС прилоТСния
  • Π’Ρ€ΠΈ способа взаимодСйствия с состояниСм (СдинствСнныС способы):
    Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ — ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, содСрТащий состояниС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для взаимодСйствия с Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ состояний
    ДСйствия — ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Javascript для описания происходящСго дСйствия
    Π Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ — ЧистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Javascript для принятия Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ дСйствия для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ состояния

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Redux являСтся нСзависимая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с React, Angular ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, я ΠΈΠ·Π±Π΅Π³Π°Π» создания ΠΎΠ±Ρ€Π°Π·Ρ†Π° прилоТСния с любой ΠΈΠ· этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ прСдставлСний. ВмСсто этого я сосрСдоточился Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° основных концСпциях Redux.

Redux ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡˆΠ΅Π»ΠΎΠΌΠ»ΡΡŽΡ‰ΠΈΠΌ, ΠΈ Ссли Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ ΠΈΠ»ΠΈ младший Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΠΌ нСприятности. Но ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ настрой — Π·Π°Π»ΠΎΠ³ успСха. Если Π²Ρ‹ ΠΈΠ·ΠΎ всСх сил ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ Π² качСствС младшСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΈΡ‰Π΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ я боролся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я столкнулся Π² качСствС младшСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π‘ΠΊΠ°ΠΆΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ @aimenbatool.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Redux ΠΎΡ‚ Merriam-Webster

re Β· dux

| \ (ˌ) rΔ“-ˈdΙ™ks

, ˈRΔ“-ˌdΙ™ks \

: Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ

β€”Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡΡ‚ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

Redux — ΠžΠ±Π·ΠΎΡ€Ρ‹, ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы

РСпост

ΠžΠ±Π·ΠΎΡ€: ΠŸΡ€ΠΎΡ‰Π΅ говоря, ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСк MERN для создания нашСго Π²Π΅Π±-прилоТСния. MongoDB Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС нашСй основной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ExpressJS вмСстС с Node.js для настройки ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ API. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React для создания нашСго SPA Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Redis Π½Π° сторонС сСрвСра Π² качСствС основного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, работая Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ наш сСрвСр ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Π½Π° Heroku. Однако Heroku ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΈ Π½Π°ΠΌ понадобятся прСимущСства инфраструктуры ΠΊΠ°ΠΊ услуги, поэтому ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Amazon EC2 для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ развСртывания нашСй Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии прилоТСния.

БСрвСрная сторона: nodemon ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ автоматичСски ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ экзСмпляр нашСго прилоТСния node ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MongoDB, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это нСрСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π‘Π£Π‘Π”, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ SQL, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ структурной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, которая Π½Π΅ мСняСтся слишком сильно. Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° сильная сторона MongoDB — простота ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Mongoose вмСстС с MongoDB для модСлирования Π΄Π°Π½Π½Ρ‹Ρ… нашСго прилоТСния.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ размСстим наш кластСр MongoDB ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ Π½Π° MongoDB Atlas. Bcrypt Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Π‘Π”. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ рисков хранСния ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ простого тСкста. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Cloudinary для хранСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Twilio SendGrid API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ автоматичСскиС элСктронныС письма, отправляСмыС нашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ частныС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ API, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JSON Web Token ΠΈ Passport. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, PayPal Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠ³ΠΎ шлюза для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ сторона: Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React для создания нашСго SPA. React ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ модСль DOM, которая ΠΎΡ‡Π΅Π½ΡŒ эффСктивна ΠΏΡ€ΠΈ отрисовкС страницы. Π’Π°ΠΊΠΆΠ΅ React ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ популярСн, ΠΈ сущСствуСт большоС сообщСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ React, поэтому ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ссли Ρƒ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ПозТС ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кроссплатформСнноС мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ использованиС React ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ нашСго ΠΊΠΎΠ΄Π° с React Native. Redux Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для управлСния состояниСм.Redux ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с React ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ слоТностСй, связанных с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнноС состояниС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Bootstrap ΠΈ собствСнный CSS для стилизации нашСго прилоТСния.

Π”Ρ€ΡƒΠ³ΠΎΠ΅: Git Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для контроля вСрсий. На Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… этапах нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Google Analytics для сбора ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ взаимодСйствиях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Slack Π±ΡƒΠ΄Π΅Ρ‚ нашим основным срСдством ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Visual Studio Code Π² качСствС основного Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΈΠΉ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ повысят ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.ΠŸΠΎΡ‡Ρ‚Π°Π»ΡŒΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для взаимодСйствия с нашими ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ API ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Redux ΠΏΡ€ΠΎΡ‚ΠΈΠ² API контСкста React

# Redux ΠΏΡ€ΠΎΡ‚ΠΈΠ² API контСкста React

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ послСдних Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ Redux Π±Ρ‹Π» THE Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ управлСния состояниСм для Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ React.

Он Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΌΠ΅Ρ€Ρ‚Π², Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ появляСтся ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π°Π³: ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ API React!

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅:

# Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Redux?

Redux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ управлСния состояниСм прилоТСния React.«БостояниС» просто относится ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  • ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅ для ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ
  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ HTTP-запроса

ВСхничСски Redux Π½Π΅ ограничиваСтся использованиСм Π² прилоТСниях React — ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… тСхнологиях. Ρ‚ΠΎΠΆΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, NgRx для Angular). Но Redux особСнно популярСн для React.

Он состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… основных ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²:

  1. A Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ государствСнный (Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JS), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся , Π° Π½Π΅ , Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ доступным ΠΈΠ»ΠΈ измСняСмым

  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π»ΠΎΠ³ΠΈΠΊΡƒ для измСнСния ΠΈ обновлСния глобального состояния (ΠΏΡƒΡ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ старого состояния со всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ измСнСния)

  3. ДСйствия , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ для запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Π° для запуска

  4. Подписки для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· глобального состояния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для использования ΠΈΡ… Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… React)

Для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ объяснСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Redux, посСтитС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React Ρƒ вас ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π° дСйствий ΠΈΠ»ΠΈ создатСлСй дСйствий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (с ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ redux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ асинхронных дСйствий):

  export const ADD_PRODUCT_TO_CART = 'ADD_PRODUCT_TO_CART'
константа экспорта REMOVE_PRODUCT_FROM_CART = 'REMOVE_PRODCUT_FROM_CART'

export const addProductToCart = product => {
  возвратная ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° => {
    setTimeout (() => {
      ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ({
        Ρ‚ΠΈΠΏ: ADD_PRODUCT_TO_CART,
        полСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°: ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚,
      })
    }, 700)
  }
}

export const removeProductFromCart = productId => {
  возвратная ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° => {
    setTimeout (() => {
      ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ({
        Ρ‚ΠΈΠΏ: REMOVE_PRODUCT_FROM_CART,
        полСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°: productId,
      })
    }, 700)
  }
}  

Π£ вас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ для обновлСния вашСго глобального состояния:

  import {ADD_PRODUCT_TO_CART, REMOVE_PRODUCT_FROM_CART} ΠΈΠ· '. / дСйствия '

const initialState = {
  Ρ‚ΠΎΠ²Π°Ρ€Ρ‹: [
    {id: 'p1', title: 'Gaming Mouse', Ρ†Π΅Π½Π°: 29,99},
    {id: 'p2', title: 'Π“Π°Ρ€Ρ€ΠΈ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€ 3', Ρ†Π΅Π½Π°: 9,99},
    
  ],
  ΠΊΠΎΡ€Π·ΠΈΠ½Π°: [],
}

const shopReducer = (state = initialState, action) => {
  switch (action.type) {
    case ADD_PRODUCT_TO_CART:
      
      
      return {... state, cart: updatedCart}
    case REMOVE_PRODUCT_FROM_CART:
      
      return {... state, cart: updatedCart}
    Π΄Π΅Ρ„ΠΎΠ»Ρ‚:
      состояниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°
  }
}  

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создано ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° прилоТСния:

 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ {createStore, applyMiddleware} ΠΈΠ· redux
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ {Provider} ΠΈΠ· 'response-redux'
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ reduxThunk ΠΈΠ· 'redux-thunk'


ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½-Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€ ΠΎΡ‚ './ ΠΌΠ°Π³Π°Π·ΠΈΠ½ / Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

const store = createStore (shopReducer, applyMiddleware (reduxThunk))

ReactDOM.render (
   {} 
  ,
  document.getElementById ('ΠΊΠΎΡ€Π΅Π½ΡŒ')
)  

Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Redux (Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚ response-redux):

 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ {ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ} ΠΈΠ· 'react-redux'
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ {addProductToCart} ΠΈΠ· ". ./store/actions"

class ProductsPage extends Component {
  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
      <Π Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚>
        
        
{}
) } } const mapStateToProps = state => { Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ { продукция: гос.ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, cartItemCount: state.cart.reduce ((count, curItem) => { return count + curItem.quantity }, 0), } } const mapDispatchToProps = dispatch => { Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ { addProductToCart: product => dispatch (addProductToCart (product)), } } экспорт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (mapStateToProps, mapDispatchToProps) (ProductsPage)

ΠœΠ΅Ρ‚ΠΎΠ΄ connect устанавливаСт подписку Π·Π° кулисами.

Π­Ρ‚ΠΎ Redux, ΠΈ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ React Context API?

# Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ API контСкста React?

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ API React ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ простой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ Π² любом Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React: ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ состояниСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…, Π½Π΅ связанных Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ слоТныС Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ пропсов, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ (Ρ‚. Π΅. ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React).

  const Button = props => (
  

{} Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ мСня

); const Form = props => ( <Ρ„ΠΎΡ€ΠΌΠ°>

Но ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠΏΠΎΡ€ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ затрудняСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.Π­Ρ‚ΠΎ просто Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°.

Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния ΠΈΠ»ΠΈ структуры ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² вашСго прилоТСния Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Π΄Π΅Ρ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Redux стал популярным, ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ! Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ с ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· JSX.

  
  

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ API React прСдоставляСт сравнимый способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²:

# ΠžΠ±ΡŠΠ΅ΠΊΡ‚ контСкста

  import React from 'react'

экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ React.createContext ({})  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ рядом с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Context Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Но Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ — это контСкст ?

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², это всСго лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JavaScript (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто числом ΠΈΠ»ΠΈ строкой ΠΈ Ρ‚. Π΄.), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π³Ρ€Π°Π½ΠΈΡ† ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² контСкстС.

Для этого нСдостаточно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прСдоставил Π΅Π³ΠΎ !

# ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ контСкста

Π‘ΠΎΠ·Π΄Π°Π² контСкст, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ всСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с Π½ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ (Ρ‚.Π΅.Π΅. Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, хранящийся Π² контСкстС — ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅).

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдоставлСн Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ потрСбуСтся доступ ΠΊ контСксту.

Для Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны Π²ΠΎ всСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Context Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ). Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Context Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² части вашСго прилоТСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, располоТСнного Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ дальшС ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Ρ‹ прСдоставляСтС Ρ‚Π°ΠΊΠΎΠΉ контСкст:

 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ShopContext ΠΈΠ· './ ΠΏΡƒΡ‚ΡŒ / ΠΊ / контСкст-ΠΌΠ°Π³Π°Π·ΠΈΠ½ ';

class App extends Component {
  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
      
        {}
      
    );
  }
}  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ prop Π² : Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ здСсь устанавливаСтС, пСрСсылаСтся Π² ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. И Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСнится, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ измСнится Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ….

Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ обновлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , , ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ потрСбитСлями нашСго контСкста ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API контСкста Π² качСствС инструмСнта глобального управлСния состояниСм.

# 3. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰ΠΈΠΉ контСкст

Для этого Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

3.1 ИспользованиС Context.Consumer

 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ShopContext ΠΈΠ· '../context/shop-context'

class ProductsPage extends Component {
  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
       {} {context => (
          
             {
                return count + curItem.quantity
              }, 0)}
            />
            
...
)} Consumer> ) } } экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ProductsPage

— это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для «внСдрСния» контСкста, прСдоставлСнного Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ нСпосрСдствСнным Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ) Π² этот Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ принимаСтся Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ прямой Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ элСмСнт . Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ! Π’Ρ‹ Π½Π΅ (Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ) Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ JSX ΠΌΠ΅ΠΆΠ΄Ρƒ ... .

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ контСкста - это Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² нашСм - это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСняСтся, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ контСкста Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ измСняСтся ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, этот Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ обновляСтся. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° обновлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° основС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ состояния.

3.2 ИспользованиС static contextType

Помимо использования , ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Context, установив статичСскоС свойство Π² нашСм (основанном Π½Π° классС) Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. Π’Π°ΠΆΠ½ΠΎ: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Π½Π° основС классов ΠΈ , этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Π½Π° основС классов («с отслСТиваниСм состояния»)!

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Hooks Ρƒ вас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ контСксту Π² любом мСстС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².Π‘ΠΌ. Π§Π°ΡΡ‚ΡŒ 2 этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

 
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ShopContext ΠΈΠ· '../context/shop-context'

class CartPage extends Component {
  static contextType = ShopContext
  componentDidMount () {
    
    console.log (this.context)
  }

  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
       Fragment>
         {
            return count + curItem.quantity
          }, 0)}
        />
        
...
) } } export default CartPage

React прСдоставит Π²Π°ΠΌ свойство this.context Π² Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Π½Π° основС классов, Ссли Π²Ρ‹ установитС static contextType = YourContext Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠΌ прСимущСством являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ - Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° - Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context Π² любом мСстС вашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ мСста, ΠΊΠ°ΠΊ componentDidMount ).

# ОбновлСниС состояния Ρ‡Π΅Ρ€Π΅Π· контСкст

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹:

  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ контСкста Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ .js (ΠΈΠ»ΠΈ практичСски любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ контСкста)
  • ΠŸΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰ΠΈΠΉ контСкст Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ контСкста (ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ…)

Как ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ контСкст Π΄Π°Π½Π½Ρ‹Π΅?

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°ΡˆΠ΅ΠΌΡƒ поставщику контСкста:

   Provider
  value = {{
    Ρ‚ΠΎΠ²Π°Ρ€Ρ‹: [],
    ΠΊΠΎΡ€Π·ΠΈΠ½Π°: [],
  }}
>
  ...
  

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это происходит Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ React - e.Π³Ρ€Π°ΠΌΠΌ. App.js с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ - ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ управлСния состояниСм React для обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² этом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ => состояниС ΠΈ setState () (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ описано Π² части 2, useState () ).

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  import React, {Component} from 'react';
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ShopContext ΠΈΠ· './shop-context';

class App extends Component {
  state = {
    Ρ‚ΠΎΠ²Π°Ρ€Ρ‹: [
      {id: 'p1', title: 'Gaming Mouse', Ρ†Π΅Π½Π°: 29.99},
      {id: 'p2', title: 'Π“Π°Ρ€Ρ€ΠΈ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€ 3', Ρ†Π΅Π½Π°: 9,99},
      ...
    ],
    Ρ‚Π΅Π»Π΅ΠΆΠΊΠ°: []
  };

  addProductToCart = product => {
    const updatedCart = [... this.state.cart];
    
    
    this.setState ({cart: updatedCart});

  };

  removeProductFromCart = productId => {
    const updatedCart = [. .. this.state.cart];
    
    
    this.setState ({cart: updatedCart});
  };

  ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ() {
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (
      
        ...
      
    );
  }
}

экспорт ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ GlobalState;  

Π’ этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с состояниСм Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ контСкст.

Π£ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для обновлСния состояния, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ свойство состояния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· состояния , Π° Ρ‚Π°ΠΊΠΆΠ΅ ссылки Π½Π° наши ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ обновлСния состояния Π² наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context (ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ).

ОсобСнно интСрСсна Ρ‡Π°ΡΡ‚ΡŒ с двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ссылки Π½Π° эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context, ΠΈ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ становится доступным для всСх ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ контСкста, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· любого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° , ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ контСксту.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ , ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, состояниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² этом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ состояниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· контСкст.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ глобальноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм ΠΏΡ€ΠΈ использовании React Context вмСсто Redux.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, просмотритС Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ («РСсурсы» Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ (Ρ‚Π°ΠΊΠΆΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅ этой страницы), Π³Π΄Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ пошаговоС руководство ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΌΠΈΠ½ΠΈ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚!

# Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ Π»ΠΈ React Context API Redux?

Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ вопрос.

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ React Context Π»ΡƒΡ‡ΡˆΠ΅ Redux.

Он встроСн Π² React, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сторонниС зависимости - Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся мСньший ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΎΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.API Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост Π² использовании, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ освоитС Π΅Π³ΠΎ (особСнно ΠΏΡ€ΠΈ использовании Ρ…ΡƒΠΊΠΎΠ², см. Π§Π°ΡΡ‚ΡŒ 2). Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠ°ΠΊ redux-thunk , для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ асинхронных дСйствий.

Redux Π½Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ…, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… прСимущСств, ΠΊΡ€ΠΎΠΌΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, возмоТности добавлСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Но Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° ваТная ошибка!

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹ΠΉ API (Π² настоящСС врСмя) Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для высокочастотных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· Π‘Π΅Π±Π°ΡΡ‚ΡŒΡΠ½Π° ΠœΠ°Ρ€ΠΊΠ±ΠΈΠ΄ΠΆΠ°, React Team), ΠΎΠ½ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для этого.Команда react-redux ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»Π°ΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° React Context Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

МоС Π»ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ контСкст Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию для маловСроятных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ с Π½ΠΈΠ·ΠΊΠΎΠΉ частотой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, локаль / Ρ‚Π΅ΠΌΠ°). Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ старый контСкст. Π’.Π΅. для статичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ обновлСния Ρ‡Π΅Ρ€Π΅Π· подписки. Он Π½Π΅ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ для распространСния всСх состояний, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Flux.
--- Π‘Π΅Π±Π°ΡΡ‚ΡŒΡΠ½ ΠœΠ°Ρ€Π±ΠΈΠ΄ΠΆ

Π˜Ρ‚Π°ΠΊ, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ каТСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования React Context для низкочастотных ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *