State react Ρ‡Ρ‚ΠΎ это

БостояниС state ΠΈ события Π² React

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ React

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ Angular 1.5.8

БСйчас ΠΌΡ‹ с Π²Π°ΠΌΠΈ освоим Ρ€Π°Π±ΠΎΡ‚Ρƒ с событиями Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ React, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ свойствах ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

State

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ понятиСм React являСтся state (состояниС, стСйт).

Π’ state хранится Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° <> с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ значСниями. Π§Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² понятиС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° экранС список ΠΈΠΌΠ΅Π½ ΡŽΠ·Π΅Ρ€ΠΎΠ². Π­Ρ‚ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π΄Π΅-Ρ‚ΠΎ хранится, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ массивС. Π’ΠΎΡ‚ этот массив ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ хранится Π² state.

Π Π°Π±ΠΎΡ‚Π° со state

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· стСйта ΠΏΡ€ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render():

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² конструкторС нашСго класса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² стСйт, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… (Ρ‡Π°Ρ‰Π΅ всСго Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ), ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· this.state.имяБостояния.

Π Π°Π±ΠΎΡ‚Π° с событиями

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с событиями Π½Π° React. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° Π±Π»ΠΎΠΊ выводился Π°Π»Π΅Ρ€Ρ‚ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ тСкстом.

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ showMessage, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π°Π»Π΅Ρ€Ρ‚ с сообщСниСм, Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render Ρƒ нас Π΅ΡΡ‚ΡŒ div, ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ этот Π°Π»Π΅Ρ€Ρ‚:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ привяТСм ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Π΄ΠΈΠ²Ρƒ событиС onclick Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° этот Π΄ΠΈΠ² срабатывал ΠΌΠ΅Ρ‚ΠΎΠ΄ showMessage.

Для этого ΠΌΡ‹ напишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° Π΄ΠΈΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сообщСниС:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ происходит Ρ€Π°Π±ΠΎΡ‚Π° с событиями: добавляСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, onClick ΠΈΠ»ΠΈ onFocus), Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° указываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΏΠΎ этому ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ.

Π Π°Π±ΠΎΡ‚Π° с this

ΠŸΡƒΡΡ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² конструкторС Ρƒ нас Π·Π°Π΄Π°Π½ this.state, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится имя ΠΈ фамилия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ showMessage Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» имя нашСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, хранящСгося Π² стСйтС (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ‘Иван’). ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ showMessage слСдуСт ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ alert(‘ΠŸΡ€ΠΈΠ²Π΅Ρ‚!’) Π½Π° alert(this.state.name), Π½ΠΎ это Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ:

Если Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄ ΠΈ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ Π½Π° div, Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ: Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Π»Π΅Ρ€Ρ‚ с сообщСниСм ‘Иван’.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ каТСтся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ.

ИзмСнСниС стСйта

ΠŸΡƒΡΡ‚ΡŒ Π² this.state хранится имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ Π½Π° экран:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡƒΡΡ‚ΡŒ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° эту ΠΊΠ½ΠΎΠΏΠΊΡƒ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ changeName:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° .bind(this) Π² строчкС onClick=. Π’ΡƒΡ‚ ΠΌΡ‹ привязываСм this Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ описано Π²Ρ‹ΡˆΠ΅.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΡ‹ смоТСм ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this.state.name, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: this.setState().

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Π° Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ: ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² этом случаС всС мСста вставки Π²ΠΈΠ΄Π° смСнят своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ΠΎ Π΅ΡΡ‚ΡŒ: послС Π²Ρ‹Π·ΠΎΠ²Π° this.setState() Π² ΠΊΠΎΠ΄Π΅

Π”Π°Π²Π°ΠΉΡ‚Π΅ собСрСм всС вмСстС:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Если Π² стСйтС нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π² this.setState ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΡƒΡΡ‚ΡŒ Π² стСйтС ΠΊΡ€ΠΎΠΌΠ΅ ΠΈΠΌΠ΅Π½ΠΈ хранится Π΅Ρ‰Π΅ ΠΈ фамилия, Π½ΠΎ ΠΌΡ‹ ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя:

Если Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄ ΠΈ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ Π½Π° div, Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ: ‘Иван’ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ помСняСтся Π½Π° ‘Коля’.

Но Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Π§Ρ‚ΠΎ Π²Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС:

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°ΠΉΡ‚Π΅ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ссылкС: Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊ ΡƒΡ€ΠΎΠΊΡƒ.

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

ИспользованиС Ρ…ΡƒΠΊΠ° состояния

Π₯ΡƒΠΊΠΈ β€” Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² React 16.8, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности React Π±Π΅Π· написания классов.

На страницС ввСдСния Π² Ρ…ΡƒΠΊΠΈ ΠΌΡ‹ познакомились с Π½ΠΈΠΌΠΈ Π½Π° этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ…ΡƒΠΊΠΈ, сравнив этот ΠΊΠΎΠ΄ с эквивалСнтным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° основС класса.

Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с классом

Если Π²Ρ‹ ΡƒΠΆΠ΅ пользовались классами Π² React, Ρ‚ΠΎ Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ спроситС сСбя, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° счётчик, Π° Π½Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ рСалистичноС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° API, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ дСлая ΠΏΠ΅Ρ€Π²Ρ‹Π΅ шаги с Ρ…ΡƒΠΊΠ°ΠΌΠΈ.

Π₯ΡƒΠΊΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

НапоминаСм, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² React выглядят Ρ‚Π°ΠΊ:

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π±Π΅Π· состояния». БСйчас ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ… состояниС React, поэтому Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Β«Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈΒ».

Π₯ΡƒΠΊΠΈ НЕ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ классов, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ вмСсто Π½ΠΈΡ….

Наш Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ начинаСтся с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…ΡƒΠΊ useState ΠΈΠ· React:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΡƒΠΊ? Π₯ΡƒΠΊ β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ функция, которая позволяСт Β«ΠΏΠΎΠ΄Ρ†Π΅ΠΏΠΈΡ‚ΡŒΡΡΒ» ΠΊ возмоТностям React. НапримСр, Ρ…ΡƒΠΊ useState прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ доступ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ React. ΠœΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΏΡ€ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ…ΡƒΠΊΠΈ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Когда ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ…ΡƒΠΊ? РаньшС, Ссли Π²Ρ‹ писали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ осознавали, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ состояниСм, Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² класс. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠœΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ это прямо сСйчас!

Π•ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ, Π° Π³Π΄Π΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π˜Ρ… ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π² Π³Π»Π°Π²Π΅ ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρ…ΡƒΠΊΠΎΠ².

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ состояния

Π‘Π»ΠΎΠ²ΠΎ Β«createΒ» (Β«ΡΠΎΠ·Π΄Π°Ρ‚ΡŒΒ») Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ совсСм Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ состояниС создаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ рСндСрится Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΆΠ΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΈ useState Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС. Π˜Π½Π°Ρ‡Π΅ Π½Π΅ сущСствовало Π±Ρ‹ «состояния» ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ. Названия всСх Ρ…ΡƒΠΊΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Β«useΒ» Ρ‚ΠΎΠΆΠ΅ нСспроста. О ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΈΠ· ΠŸΡ€Π°Π²ΠΈΠ» Ρ…ΡƒΠΊΠΎΠ².

Когда ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС счётчика Π² классС, ΠΌΡ‹ обращаСмся ΠΊ this.state.count :

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ count Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ построчно пробСТимся ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ наши знания:

ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ это всё ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слишком слоТным. НС Ρ‚ΠΎΡ€ΠΎΠΏΠΈΡ‚Π΅ΡΡŒ! Если Π²Ρ‹ Π·Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ Π² объяснСнии, Π΅Ρ‰Ρ‘ Ρ€Π°Π· ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ с Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. ΠžΠ±Π΅Ρ‰Π°Π΅ΠΌ, Ссли Π²Ρ‹ Π½Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ Β«Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅Β», ΠΊΠ°ΠΊ состояниС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² классах, ΠΈ посмотритС Π½Π° ΠΊΠΎΠ΄ свСТим взглядом, всё станСт ясно.

Π‘ΠΎΠ²Π΅Ρ‚: Π§Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки?

Π’Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки Π² мСстС, Π³Π΄Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная состояния:

Π”Π²Π° ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π½Π΅ содСрТатся Π² API React. Названия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ состояния Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π²Ρ‹:

Π‘ΠΎΠ²Π΅Ρ‚: ИспользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… состояния

ΠžΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ состояния Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Ρƒ [something, setSomething] ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΅Ρ‰Ρ‘ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… собствСнным ΠΈΠΌΠ΅Π½Π΅ΠΌ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… состояния совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ массивами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ связанныС ΠΏΠΎ смыслу Π΄Π°Π½Π½Ρ‹Π΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ this.setState Π² классах, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ состояния всСгда Π·Π°ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Ρ‘ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π½Π΅ осущСствляСт слияниС.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… состояния Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π² FAQ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ…ΡƒΠΊΠ° useEffect , ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² классах. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты.

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

2.6 БостояниС ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ расскаТСм ΠΎ Ρ‚Π°ΠΊΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… концСпциях, ΠΊΠ°ΠΊ состояниС ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° React. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ API ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Рассмотрим, упомянутый Ρ€Π°Π½Π΅Π΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… часов.

Пока Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ способ обновлСния UI.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ сдСлаСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer ΠΏΠΎ-настоящСму ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈ инкапсулированным. Он сначала установит собствСнный Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Π° Π·Π°Ρ‚Π΅ΠΌ станСт пСриодичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ с инкапсуляции ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer :

Π’ ΠΈΠ΄Π΅Π°Π»Π΅, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Timer Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ состояниС.

БостояниС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° свойства props, ΠΎΠ΄Π½Π°ΠΊΠΎ являСтся ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ контролируСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

РаньшС состояниСм ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹-классы. Однако с появлСниСм Ρ…ΡƒΠΊΠΎΠ² состояниСм ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

2.6.1 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² классы

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Timer Π² класс Π·Π° ΠΏΡΡ‚ΡŒ шагов:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΊΠ°ΠΊ класс, Π° Π½Π΅ ΠΊΠ°ΠΊ функция.

2.6.2 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ локального состояния Π² класс

Π”Π°Π²Π°ΠΉΡ‚Π΅ пСрСмСстим date ΠΈΠ· props Π² state Π² Ρ‚Ρ€ΠΈ этапа.

1. Π—Π°ΠΌΠ΅Π½ΠΈΠΌ this.props.value Π½Π° this.state.value Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render() :

2. Π”ΠΎΠ±Π°Π²ΠΈΠΌ конструктор класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС this.state :

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ свойства props Π² Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ конструктор:

3. УдаляСм свойство value ΠΈΠ· элСмСнта:

ПозТС ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² сам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ сСбя ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

2.6.3 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² класс

ΠŸΡ€ΠΈ стартС прилоТСния React, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ отрисован Π² DOM. Π’ React это называСтся ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ/ΠΌΠΎΠ½Ρ‚Π°ΠΆΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ монтирования Timer Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСриодичСски сСбя ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ.

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

React позволяСт ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅-классС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ монтируСтся ΠΈΠ»ΠΈ дСмонтируСтся:

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«lifecycle hooksΒ». ΠœΡ‹ ΠΆΠ΅ для простоты Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° (Π–Π¦).

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° componentWillUnmount() :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ постоянно обновляСтся Ρ‡Π΅Ρ€Π΅Π· установлСнный ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ всё, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Когда Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ отрисовки Timer вставлСн Π² DOM, React Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ componentDidMount() ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer обращаСтся ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ для установки Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ increment() Ρ€Π°Π· Π² сСкунду.

Если ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΈΠ· DOM, React Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ componentWillUnmount() ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ останавливаСтся.

2.6.4 ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ состояния

О setState() Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ.

2.6.4.1 НС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ состояниС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚:

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ setState() :

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ this.state Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² конструкторС!

2.6.4.2 ОбновлСния состояния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ асинхронными

React ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² setState() Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π² цСлях ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ React ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ this.props ΠΈ this.state асинхронно, Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΡ… значСния для вычислСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ состояния.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ:

ΠœΡ‹ использовали ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

2.6.4.3 ОбновлСния состояния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ

НапримСр, состояниС вашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мноТСство нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡ… нСзависимо с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² setState() :

2.6.5 Нисходящий ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ состояниС часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ инкапсулированным. Оно нСдоступно для ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌ Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΠΈ устанавливаСт.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ это состояниС Π²Π½ΠΈΠ· ΠΊΠ°ΠΊ свойства props своим Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ:

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚ΠΎ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ «свСрху-Π²Π½ΠΈΠ·Β», «нисходящим» ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π›ΡŽΠ±ΠΎΠ΅ состояниС всСгда находится Π²ΠΎ Π²Π»Π°Π΄Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π›ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ UI, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ этого состояния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Β«Π½ΠΈΠΆΠ΅Β» ΠΈΡ… Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Если ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ Β«Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄Β» свойств, Ρ‚ΠΎ состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° являСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ источника Π²ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соСдиняСтся с Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ΠΎΠΌ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Ρ‡Π΅Ρ‚ Π²Π½ΠΈΠ·.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ устанавливаСт своё собствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ обновляСтся нСзависимо.

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

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

React: основныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ состояниСм

State react Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ State react Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ State react Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ State react Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ State react Ρ‡Ρ‚ΠΎ это

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, Π΄Ρ€ΡƒΠ·ΡŒΡ!

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” список Π·Π°Π΄Π°Ρ‡. Π§Ρ‚ΠΎ Π² Π½Π΅ΠΌ особСнного, спроситС Π²Ρ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я попытался Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Β«Ρ‚ΡƒΠ΄ΡƒΡˆΠΊΡƒΒ» с использованиСм Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ состояниСм Π² React-прилоТСниях: useState, useContext + useReducer, Redux Toolkit ΠΈ Recoil.

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояниС прилоТСния, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ΅Π½ Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ.

БостояниС β€” это ΡΠΎΠ±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ понятиС для любой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‚ ΠΆΠ΅ список Π·Π°Π΄Π°Ρ‡ ΠΈΠ»ΠΈ список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ состояниС ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, состояниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ состояниС Ρ„ΠΎΡ€ΠΌΡ‹.

Условно, состояниС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° локальноС ΠΈ глобальноС. Под Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, понимаСтся состояниС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, состояниС Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, являСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, глобальноС состояниС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ распрСдСлСнным ΠΈΠ»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ, подразумСвая ΠΏΠΎΠ΄ этим Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ состояниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. Π£ΡΠ»ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ рассматриваСмой Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ выраТаСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ локальноС состояниС Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколькими ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, состояниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ useState(), ΠΌΠΎΠΆΠ΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ), Π° глобальноС состояниС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ всСми ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Redux, Π³Π΄Π΅ имССтся ΠΎΠ΄Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ для состояния всСго прилоТСния, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ срСз (slice) состояния для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части UI, Ρ‚ΠΎΡ‡Π½Π΅Π΅, для Π»ΠΎΠ³ΠΈΠΊΠΈ управлСния этой Ρ‡Π°ΡΡ‚ΡŒΡŽ).

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

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ инструмСнта, Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΡΡŒ ΠΎΠ±Ρ‰ΠΈΠΌ описаниСм ΠΈ ссылками Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹. Для прототипирования UI Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ react-bootstrap.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Create React App:

useState()

Π₯ΡƒΠΊ Β«useState()Β» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для управлСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ состояниСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив с двумя элСмСнтами: Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ состояния ΠΈ сСттСром β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ для обновлСния этого значСния. Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ…ΡƒΠΊΠ°:

Пока ограничимся Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ опСрациями: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅), ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ услоТним сСбС Тизнь Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ нашС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ).

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚ΡƒΡ‚ всС понятно.

Π’ App.js ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ useState() опрСдСляСм Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС прилоТСния, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ прилоТСния, пСрСдавая ΠΈΠΌ состояниС ΠΈ сСттСр Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠΏΠΎΠ²:

Π’ TodoForm.js ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π² список:

Π’ TodoList.js ΠΌΡ‹ просто Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ список элСмСнтов:

НаконСц, Π² TodoListItem.js происходит самоС интСрСсноС β€” здСсь ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

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

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ с Π²Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ список Π·Π°Π΄Π°Ρ‡ с использованиСм Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ состояниСм. КакиС Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· всСго этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Π― выскаТу своС ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° статус истины Π² послСднСй инстанции. РазумССтся, Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнта для управлСния состояниСм зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡, Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

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

БостояниС ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»

На этой страницС прСдставлСна концСпция состояния ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ React. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ справочник API ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… часов ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° элСмСнтов ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ способ обновлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (UI). ΠœΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ReactDOM.render() для измСнСния отрисованного Π²Ρ‹Π²ΠΎΠ΄Π°:

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Clock Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈ инкапсулированным. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ самого сСбя ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ с инкапсуляции ΠΊΠΎΠ΄Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ часов:

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ само ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Clock :

БостояниС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° свойство, Π½ΠΎ ΠΎΠ½ΠΎ являСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ контролируСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

ΠœΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ классы, ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности. Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС β€” это ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ…: эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ классам.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² класс

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ пустоС объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Clock Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΊΠ°ΠΊ класс, Π° Π½Π΅ функция.

ΠœΠ΅Ρ‚ΠΎΠ΄ render Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° происходит ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ‹ отрисовываСм Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ DOM-ΡƒΠ·Π΅Π», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр класса Clock Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ локальноС состояниС ΠΈ Ρ…ΡƒΠΊΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ локального состояния Π² класс

ΠœΡ‹ пСрСмСстим date ΠΈΠ· свойств Π² состояниС Π·Π° Ρ‚Ρ€ΠΈ шага:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ props Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ) конструктору:

ПозТС ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ самому ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Clock собствСнным Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² класс

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

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Clock отрисовываСтся Π² DOM Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·. Π­Ρ‚ΠΎ называСтся Β«ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌΒ» (установкой) Π² React.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² классС-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ для выполнСния ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ устанавливаСтся ΠΈ удаляСтся:

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ β€œΡ…ΡƒΠΊΠ°ΠΌΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ) ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ цикла”.

Π₯ΡƒΠΊ componentDidMount() запускаСтся послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° отрисован Π² DOM. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ мСсто для установки Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°:

Π₯отя this.props настраиваСтся самим React, ΠΈ Ρƒ this.state Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля Π² класс Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ участвуСт Π² ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°).

ΠœΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² Ρ…ΡƒΠΊΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° componentWillUnmount() :

Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ this.setState() для планирования ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ локального состояния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ часы Ρ‚ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

Π”Π°Π²Π°ΠΉΡ‚Π΅ быстро ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ происходит, Π° Ρ‚Π°ΠΊΠΆΠ΅ пСрСчислим порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС состояния

НС измСняйтС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ состояниС

НапримСр, это Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ отрисовкС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ setState() :

ОбновлСния состояния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ асинхронными

React ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² setState() Π·Π° ΠΎΠ΄Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ this.props ΠΈ this.state ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ асинхронно, Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΡ… значСния для вычислСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ состояния.

НапримСр, этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ счётчик:

ΠœΡ‹ использовали ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹ΡˆΠ΅, Π½ΠΎ это Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ функциями:

ОбновлСния состояния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ

НапримСр, вашС состояниС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько нСзависимых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² setState() :

ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Ни Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, Π½ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ с состояниСм ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ, ΠΈ ΠΈΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π»ΠΈ ΠΎΠ½ ΠΊΠ°ΠΊ функция ΠΈΠ»ΠΈ класс.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ состояниС часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ инкапсулированным. Оно нСдоступно для любого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π»Π°Π΄Π΅Π΅Ρ‚ ΠΈ устанавливаСт Π΅Π³ΠΎ.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ своё состояниС Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ свойства Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… «свСрху Π²Π½ΠΈΠ·Β» ΠΈΠ»ΠΈ Β«ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…Β». Π›ΡŽΠ±ΠΎΠ΅ состояниС всСгда ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ, Π° Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· этого состояния, ΠΌΠΎΠ³ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, находящиСся Β«Π½ΠΈΠΆΠ΅Β» Π² ΠΈΡ… Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Если Π²Ρ‹ прСдставляСтС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ свойств, состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ источник Π²ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соСдиняСтся с Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ΠΎΠΌ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Ρ‡Ρ‘Ρ‚ Π²Π½ΠΈΠ·.

Π’ React-прилоТСниях, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ состояниС ΠΈΠ»ΠΈ Π½Π΅Ρ‚, β€” это рассматриваСтся ΠΊΠ°ΠΊ Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π΅Π· состояния Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… с состояниСм, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

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

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

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