ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

React: Установка ΠΈ настройка

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π’ настоящСС врСмя React являСтся самой популярной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ JavaScript для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, ΠΈ Π² ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ эта тСндСнция сохранится. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим способы быстрой ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΉ настройки React. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ прямо Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅!

ΠŸΠΎΡ‡Π΅ΠΌΡƒ React?

Установка ΠΈ настройка

Π•ΡΡ‚ΡŒ нСсколько способов Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с React. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ взглянСм Π½Π° CodeSandbox ΠΈ CodePen. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ сразу Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ!

React Π² CodeSandbox

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° https://codesandbox.io/s ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ReactΒ».

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

МгновСнно Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π² срСдС React, которая Π±Ρ‹Π»Π° настроСна с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ create-react-app. ΠœΡ‹ рассмотрим этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅! Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· настройки локальной установки, это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ! Π’Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊ сборка, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями, всС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылкой Π½Π° всС, Π½Π°Π΄ Ρ‡Π΅ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ!

React Π² CodePen

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React

Установка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Create React App

ВсС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ наш Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ЗапуститС ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ установку! Π”Π°ΠΉΡ‚Π΅ Π΅ΠΌΡƒ любоС имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ нравится..

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

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

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

УспСх! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ структуру.

НСсколько ΠΊΠΎΠΌΠ°Π½Π΄ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ» package.json :

Запуск вашСго прилоТСния

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ запустим наш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр! Из ΠΏΠ°ΠΏΠΊΠΈ вашСго прилоТСния запуститС:

Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π½Π° localhost:3000

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ create-react-app, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ React, React-DOM ΠΈ React-Scripts. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ create-react-app.

ВозмоТности Create-React-App

ΠŸΡ€ΠΎΠ΄ сборка

Π‘Π°ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° build ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ваш ΠΊΠΎΠ΄ React Π² ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Babel). Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ваши Ρ„Π°ΠΉΠ»Ρ‹ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, объСдиняя всС ваши Ρ„Π°ΠΉΠ»Ρ‹ JavaScript Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для сокращСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ВСстированиС вашСго прилоТСния

Ejecting

БообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈ синтаксичСскиС ошибки ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ ошибкС компиляции. И Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° ошибок, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ²Π΅Ρ€Π»Π΅ΠΉ, Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

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

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

React.js: понятноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ, считаСт, Ρ‡Ρ‚ΠΎ, ΠΊ Π½Π΅ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… руководств ΠΏΠΎ React Π½Π΅ удСляСтся Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ внимания Ρ†Π΅Π½Π½Ρ‹ΠΌ практичСским ΠΏΡ€ΠΈΡ‘ΠΌΠ°ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊΠΈΠ΅ руководства Π½Π΅ всСгда Π΄Π°ΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ ΠΏΠΎ Π½ΠΈΠΌ занимаСтся, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Β» ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с React.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ React?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ приступим ΠΊ Π΄Π΅Π»Ρƒ, скаТСм ΠΏΠ°Ρ€Ρƒ слов ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ React ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ срСди срСдств для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-интСрфСйсов. БущСствуСт мноТСство UI-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ React? Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° этот вопрос β€” сравним Π΄Π²Π° самых популярных инструмСнта для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйсов β€” React ΠΈ Angular. Надо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² это сравнСниС ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π½Π°Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Vue.js, Π½ΠΎ ΠΌΡ‹ ограничимся React ΠΈ Angular.

▍ДСкларативный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ описанию интСрфСйсов

React-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² описании Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ вывСсти Π½Π° страницу (Π° Π½Π΅ Π² составлСнии инструкций для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, посвящённых Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Ρ‚ΡŒ). Π­Ρ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сокращСниС ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² шаблонного ΠΊΠΎΠ΄Π°.

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

Π’ React, приступая ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, просто Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π’ΡƒΡ‚ Π½Π΅Ρ‚ шаблонного ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π½ΡƒΠΆΠ½Π° нСкоторая ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°, Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ чистых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

▍Чёткий синтаксис

β–ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ кривая обучСния

ΠšΡ€ΠΈΠ²Π°Ρ обучСния β€” это Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ UI-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Π’ этой связи Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² React имССтся мСньшС абстракций, Ρ‡Π΅ΠΌ Π² Angular. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ JavaScript, Ρ‚ΠΎ, вСроятно, Π²Ρ‹ смоТСтС Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ React-прилоТСния Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π·Π° дСнь. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, потрСбуСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Π½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ быстро.

Если ΠΆΠ΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Angular, Ρ‚ΠΎ окаТСтся, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π²Π°ΠΌ придётся ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык (Angular ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ TypeScript), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдства ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Angular ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ.

β–ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° привязки Π΄Π°Π½Π½Ρ‹Ρ…

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

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

β–Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

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

Π’ React всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€ΠΎΠ² чистых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ИспользованиС чистых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для формирования UI ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Π³Π»ΠΎΡ‚ΠΊΠΎΠΌ чистого Π²ΠΎΠ·Π΄ΡƒΡ…Π°.

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

▍Node.js

Node.js β€” это сСрвСрная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript-ΠΊΠΎΠ΄Π°, возмоТности ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пригодятся Π½Π°ΠΌ для React-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если эта ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅Ρ‰Ρ‘ Ρƒ вас Π½Π΅ установлСна β€” сСйчас самоС врСмя это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

β–ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹, для создания основы React-прилоТСния, Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ create-react-app ΠΎΡ‚ Facebook. ВСроятно, это самый популярный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ настройкС Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ окруТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Благодаря create-react-app программист ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² своё распоряТСниС мноТСство Π½ΡƒΠΆΠ½Ρ‹Ρ… инструмСнтов, Ρ‡Ρ‚ΠΎ избавляСт Π΅Π³ΠΎ ΠΎΡ‚ нСобходимости ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ.

Π—Π°Ρ‚Π΅ΠΌ, для создания шаблона прилоТСния, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

На этом ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. Для запуска прилоТСния Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ΡƒΡ‚ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ запускаСм сСрвСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, пСрСйдя Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ адрСсу http://localhost:3000/.

▍Бтруктура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

РазбСрёмся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ устроСно React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вашСй IDE (я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Visual Studio Code).

Π€Π°ΠΉΠ» index.html

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π—Π΄Π΅ΡΡŒ нас особСнно интСрСсуСт строка

. ИмСнно Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нашС React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΡΡŒ этот элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π½Π° ΠΊΠΎΠ΄ прилоТСния, Π° всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ останСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

Π€Π°ΠΉΠ» index.js

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π’ΠΎΡ‚ строка ΠΊΠΎΠ΄Π°, которая отвСтствСнна Π·Π° Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Β«React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌΒ», Π½Π° страницу:

Π€Π°ΠΉΠ» App.js

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ className β€” это эквивалСнт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° class Π² HTML. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для назначСния элСмСнтам CSS-классов Π² цСлях ΠΈΡ… стилизации. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class Π² JavaScript являСтся Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Π΅Π³ΠΎ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ выяснили ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…:

▍РСкомСндация β„–1: Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² React ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, примСняя Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Class Component), Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π² использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Functional Component). Как Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Π² Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы. К соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ руководств ΠΏΠΎ React для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ….

Π§Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π² описании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° классов? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ тяТСло Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свойство Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ нСкачСствСнного раздСлСния отвСтствСнности, смСшиванию Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСдставлСния (Π° это услоТняСт ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ тСстированиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ). Π’ Ρ†Π΅Π»ΠΎΠΌ, использованиС классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ программист, Ρ„ΠΈΠ³ΡƒΡ€Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡΡΡŒ, «стрСляСт сСбС Π² Π½ΠΎΠ³ΡƒΒ». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, особСнно Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистах, я ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π±Ρ‹ ΠΈΠΌ совсСм Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ классами ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΡƒΡ‚ сдСлали? А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΌΡ‹ ΡƒΠ±Ρ€Π°Π»ΠΈ класс ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ render конструкциСй Π²ΠΈΠ΄Π° function App() <. >. Если ΠΆΠ΅ Ρ‚ΡƒΡ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ синтаксисом стрСлочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ES6, Ρ‚ΠΎ наш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅:

ΠœΡ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ класс Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ вывСсти Π½Π° страницу.

ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΡ‚Π΅ Π½Π°Π΄ этим. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, Π½Π΅Ρ‚ шаблонного ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ β€” практичСски чистая Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°. Π Π°Π·Π²Π΅ это Π½Π΅ прСкрасно?

Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, работая с Π½ΠΈΠΌΠΈ, приходится Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° стандартныС конструкции.

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

▍Знакомство со свойствами

Бвойства (props) β€” это ΠΎΠ΄Π½Π° ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ React. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «свойства»? Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΠΏΠΎΠ½ΡΡ‚ΡŒ, вспомнитС ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ функциям. Π’ сущности, свойства β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Код ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, воспользовавшись возмоТностями ES6 ΠΏΠΎ Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Π§Ρ‚ΠΎ Ссли для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹, вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², использовали Π±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, основанныС Π½Π° классах? Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Greetings выглядСл Π±Ρ‹ Ρ‚Π°ΠΊ:

β–ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (Single Responsibility Principle, SRP) β€” это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² программирования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ. Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ это качСствСнно. Если Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π΅ слСдуя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΡˆΠΌΠ°Ρ€Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

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

Новички ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ мноТСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². НапримСр, Ρƒ нас ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Greetings ΠΈ App находится Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‚Π°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π½Π΅ слСдуСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ SRP.

Π”Π°ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ малСнькиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (Π²Ρ€ΠΎΠ΄Π΅ нашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Greetings ) Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ….

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Greetings Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

Π—Π°Ρ‚Π΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ этим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ App :

▍Знакомство с состояниСм прилоТСния

БостояниС (state) β€” это Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ React. ИмСнно здСсь хранятся Π΄Π°Π½Π½Ρ‹Π΅ прилоТСния β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. НуТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ состояниС. НуТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡ‡ΠΊΠΈ, Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅? Для этого Ρ‚ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС прилоТСния.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти своё имя. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ здСсь я Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ для описания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° класс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ рассматриваСмой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, созданный с использованиСм класса, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ»Π΅? Π’ React Π½Π΅ полагаСтся ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам DOM Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΈ состояниС прилоТСния.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС event.target.value β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Ρ‘Π» Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” Π΅Π³ΠΎ имя.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ объявили onFirstNameChange Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ объявлялись Π±Ρ‹ Π² Π²ΠΈΠ΄Π΅ свойств класса, содСрТащих стрСлочныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Если ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° this Π±ΡƒΠ΄Π΅Ρ‚ привязано ΠΊ элСмСнту Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° Π½Π΅ ΠΊ классу, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. Π­Ρ‚Π° ΠΌΠ΅Π»ΠΎΡ‡ΡŒ часто сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Π­Ρ‚ΠΎ β€” ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ использованию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π° Π½Π΅ классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

β–ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΡƒ

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ систСму ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ рСгулярныС выраТСния. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠΈΠΌ, Ρ‡Ρ‚ΠΎ имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… символов ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ лишь Π±ΡƒΠΊΠ²Ρ‹.

БостояниС прилоТСния

Разрабатывая систСму ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π²ΠΎΠ΄Π°, ΠΌΡ‹, для Π½Π°Ρ‡Π°Π»Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² состояниС Π½ΠΎΠ²ΠΎΠ΅ свойство: firstNameError :

Ѐункция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Если ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ β€” ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сообщСниС ΠΎΠ± ошибкС. Если имя ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΏΡƒΡΡ‚ΡƒΡŽ строку, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ошибок ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π’ΡƒΡ‚ ΠΌΡ‹, Ρ€Π°Π΄ΠΈ краткости ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ JavaScript.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события onBlur

ΠœΠ΅Ρ‚ΠΎΠ΄ render

Рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° render() :

Π’ΡƒΡ‚ ΠΌΡ‹ снова ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ присваиваниСм для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· состояния.

▍Бтилизация

Если Π²Ρ‹ воспроизводили Ρƒ сСбя Ρ‚ΠΎ, ΠΎ Ρ‡Ρ‘ΠΌ ΠΌΡ‹ Ρ‚ΡƒΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ наша Ρ„ΠΎΡ€ΠΌΠ° выглядит Π½Π΅ слишком симпатично. Π”Π°Π²Π°ΠΉΡ‚Π΅ это исправим, воспользовавшись встроСнными стилями:

ΠŸΡ€ΠΈΠ·Π½Π°ΡŽ, Ρ‡Ρ‚ΠΎ я Π½Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€, Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, выглядит сСйчас Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅ΠΆΠ΄Π΅. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ стала Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΠΎΡ€ΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выводится сообщСниС ΠΎΠ± ошибкС.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Бтилизованная Ρ„ΠΎΡ€ΠΌΠ° с сообщСниСм ΠΎΠ± ошибкС

▍РСкомСндация β„–2: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования стилСй Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ этот Ρ„Π°ΠΉΠ» создан, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ SimpleComponent :

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выглядит ΠΊΡƒΠ΄Π° Ρ‡ΠΈΡ‰Π΅, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ сСбС Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ стили Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ….

▍ДобавлСниС ΠΏΠΎΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π½Π°ΡˆΡƒ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ интСрСснСС, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Ρ‘ ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

Π’ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β€” ΠΌΡ‹ просто скопировали ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для описания firstName ΠΈ создали ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² событий.

НСуТто это я написал слово «скопировали»? ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β€” это Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ стоит всСми силами ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.

▍РСкомСндация β„–3: раздСляйтС ΠΊΠΎΠ΄ Π½Π° нСбольшиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹

ΠœΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° части, это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности. Π₯ΠΎΡ€ΠΎΡˆΠΎ написанный ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ поэма, Π° я Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render нашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° выглядит ΠΊΡƒΠ΄Π° Ρ…ΡƒΠΆΠ΅. Займёмся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π―, создавая этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, просто ΠΈΠ·Π²Π»Ρ‘ΠΊ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ» Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… экзСмплярах ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π΅ΠΌΡƒ Π² Π²ΠΈΠ΄Π΅ свойств.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ SimpleForm :

Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»Π΅Π³Ρ‡Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΉΡ‚ΠΈ Π΅Ρ‰Ρ‘ дальшС, создав ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TextField для ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ. Π’ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° FirstNameField :

ΠŸΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ устроСн ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ LastNameField :
Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° выглядит Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅.

β–Πž классах ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, основанныС Π½Π° классах, отдавая ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ:

Π˜Ρ‚ΠΎΠ³ΠΈ

Π₯отя этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ получился достаточно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ, ΠΎ создании React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ. Π’ частности, ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ рСкомСндуСтся ΠΈ Π½Π΅ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это руководство Π½Π΅ являСтся Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли благодаря Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ»ΠΎΡΡŒ вашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ знакомство с React, Ρ‚ΠΎ Π²Ρ‹, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ сСгодня ΡƒΠ·Π½Π°Π»ΠΈ, смоТСтС эффСктивно ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ эту UI-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

β†’ Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², рассмотрСнных Π² этом ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Если сСгодня, Π² Ρ…ΠΎΠ΄Π΅ прочтСния этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π²Ρ‹ написали свои ΠΏΠ΅Ρ€Π²Ρ‹Π΅ строки React-ΠΊΠΎΠ΄Π°, просим ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ впСчатлСниями.

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

ПишСм ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° React с нуля Π·Π° час

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

ПишСм ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° React с нуля Π·Π° час

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с React β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. React появился Π² 2013 Π³ΠΎΠ΄Ρƒ ΠΈ достаточно быстро стал популярным срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². БСгодня Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ Π²Π΅Π±-прилоТСниями Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Facebook, Instagram, Trello, AirBnb, PayPal. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ смоТСм Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° ΠΏΠΎΠ³ΠΎΠ΄Ρ‹: ΠΎΡ‚ установки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ create-react-app (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° GitHub) Π΄ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ API ΠΈ стилСй bootswatch.

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π². Если Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ React, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ наш ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ дСлится совСтами ΠΏΠΎ использованию этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±Ρ‹Π» написан для Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΠ° Open Source Dev Garage, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² F8 2017. Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, посмотритС 48-ΠΌΠΈΠ½ΡƒΡ‚Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ слСдуйтС ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½Ρ‹ΠΌ инструкциям Π² этом руководствС.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π² сСминар ΠΈΠ»ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠ² руководство, Π²Ρ‹ создадитС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° ΠΏΠΎΠ³ΠΎΠ΄Ρ‹:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ вашС ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π²Π°ΠΌ понадобится node.js ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Atom.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ установим create-react-app :

НачнСм ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° ΠΏΠΎΠ³ΠΎΠ΄Ρ‹:

Π”Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ‹ установим Π½Π°Π±ΠΎΡ€ инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нашС React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ установки ΠΌΡ‹ смоТСм Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ:

НовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ автоматичСски откроСтся Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅!

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Бвойства ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ create-react-app создал автоматичСски. Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ weather/src/App.js :

НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π³Π΄Π΅ функция render() являСтся Π΅Π³ΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ тСкст, сохранитС измСнСния ΠΈ посмотритС, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ автоматичСски ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ ΠΈΡ…!

27–28 ноября, Москва, Π‘Π΅cΠΏΠ»Π°Ρ‚Π½ΠΎ

Π“Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ нСсколько Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ:

Из массива Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ создадим Π½Π°Π±ΠΎΡ€ элСмСнтов button ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ свойство key для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ React Π·Π½Π°Π» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов Π² массивС.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

На этом этапС Ρ„Π°ΠΉΠ» App.js Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ.

БостояниС

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ this.state ΠΈ this.setState Π² нашСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ App :

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

На этом этапС Ρ„Π°ΠΉΠ» App.js Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ.

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Иногда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (React-ΠΊΠΎΠ΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ Ρ€Π°Π· для Ρ‚Π°ΠΊΠΈΡ… случаСв.

Π£Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ render() для красивого Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

На этом этапС Ρ„Π°ΠΉΠ» App.js Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ.

Установка ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ стили ΠΈΠ· bootstrap Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°:

Π”Π°Π»Π΅Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ· react-bootstrap ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° сайтС react-bootstrap:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выглядит ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚ сСбя. Для этого установим bootswatch :

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ нашСго прилоТСния:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»)

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ваш ΠΊΠΎΠ΄ Π½Π° Github, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ReadMe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ прилоТСния Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… популярных сСрвисах.

Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… сСрвисов являСтся Netlify, особСнно Π² случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β«Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развСртывания».

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅: знакомство с React

Π’Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ React, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ это Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

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

Π­Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ рассчитано Π½Π° людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Если Π²Π°ΠΌ большС нравится ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Ρ‚ΠΎ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с пошагового руководства. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ руководство Π² Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²:

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

Π§Ρ‚ΠΎ ΠΌΡ‹ собираСмся ΠΏΠΈΡΠ°Ρ‚ΡŒ?

Π’ этом Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° React.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь β€” готовая ΠΈΠ³Ρ€Π°. Если Π²Ρ‹ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с синтаксисом, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ. ЦСль этого ввСдСния β€” ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с React ΠΈ Π΅Π³ΠΎ синтаксисом.

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

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π² крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π½Π΅ΠΉ. ΠœΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ с простой Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΌΡ‹ настроим ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ созданиС ΠΈΠ³Ρ€Ρ‹.

ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с HTML ΠΈ JavaScript. Однако, Π²Ρ‹ смоТСтС ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ Ссли Π·Π½Π°ΠΊΠΎΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ понятиями программирования ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, массивы ΠΈ, Π² мСньшСй стСпСни, классы.

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° прохоТдСния практичСской части β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π»ΠΈΠ±ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: ПишСм ΠΊΠΎΠ΄ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅

Π­Ρ‚ΠΎ самый быстрый способ для старта.

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ эту Π—Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ пустоС ΠΏΠΎΠ»Π΅ для ΠΈΠ³Ρ€Ρ‹ Π² крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠ΄ Π½Π° React, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ постСпСнно ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠžΠ±Π·ΠΎΡ€Ρƒ React.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π­Ρ‚ΠΎ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ трСбуСтся этим Π²Π²ΠΎΠ΄Π½Ρ‹ΠΌ руководством!

ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ: Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ для написания ΠΊΠΎΠ΄Π° Π² вашСм любимом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅

Π­Ρ‚ΠΈ настройки ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ позволят ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с использованиСм вашСго любимого Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС npm start Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ http://localhost:3000 Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ пустоС ΠΏΠΎΠ»Π΅ для крСстиков-Π½ΠΎΠ»ΠΈΠΊΠΎΠ².

ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эти инструкции для настройки подсвСтки синтаксиса Π² вашСм Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅, я застрял!

Если Π²Ρ‹ застряли β€” ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ сообщСству. Π’ частности Π§Π°Ρ‚ Reactiflux β€” это прСкрасноС мСсто, Π³Π΄Π΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚. Если Π²Ρ‹ Π½Π΅ доТдались ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈΠ»ΠΈ всё Π΅Ρ‰Ρ‘ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, поТалуйста, Π·Π°Π΄Π°ΠΉΡ‚Π΅ вопрос, ΠΈ ΠΌΡ‹ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ React!

React β€” это дСкларативная, эффСктивная ΠΈ гибкая JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. Она позволяСт Π²Π°ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ слоТный UI ΠΈΠ· ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… кусочков ΠΊΠΎΠ΄Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈΒ».

React ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ с подклассов React.Component :

Π‘ΠΊΠΎΡ€ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ этим Π·Π°Π±Π°Π²Π½Ρ‹ΠΌ, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Π½Π° XML, Ρ‚Π΅Π³Π°ΠΌ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ React, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° экранС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° наши Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, React эффСктивно обновляСт ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ наши ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ render Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° экранС. React Π±Π΅Ρ€Ρ‘Ρ‚ это описаниС ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Если Ρ‚ΠΎΡ‡Π½Π΅Π΅, render Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ React-элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся лСгковСсным описаниСм Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ React-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«JSXΒ» для упрощСния описания структуры. Π’ΠΎ врСмя компиляции синтаксис

Если Π²Π°ΠΌ интСрСсно, Ρ‚ΠΎ createElement() Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан Π² справочникС API, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² этом Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ. ВмСсто этого ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JSX.

JSX ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСй ΠΌΠΎΡ‰ΡŒΡŽ JavaScript. Π’ JSX Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ JavaScript-выраТСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ React-элСмСнт являСтся JavaScript-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ShoppingList Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встроСнныС DOM-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ€ΠΎΠ΄Π΅

РазбСрёмся со стартовым ΠΊΠΎΠ΄ΠΎΠΌ

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ практичСской Ρ‡Π°ΡΡ‚ΡŒΡŽ Π² вашСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ этот ΠΊΠΎΠ΄ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌΠΎΠΌ локально, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ src/index.js Π² ΠΏΠ°ΠΏΠΊΠ΅ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π²Ρ‹ ΡƒΠΆΠ΅ использовали этот Ρ„Π°ΠΉΠ» Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ настройки).

Π­Ρ‚ΠΎΡ‚ стартовый ΠΊΠΎΠ΄ β€” Π±Π°Π·Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ CSS-стили, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ React ΠΈ написании ΠΈΠ³Ρ€Ρ‹ крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ.

Π˜Π·ΡƒΡ‡ΠΈΠ² ΠΊΠΎΠ΄, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· пропсы

ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΌΡ‹ΡˆΠ΅Ρ‡Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ИзмСним ΠΌΠ΅Ρ‚ΠΎΠ΄ render Π²Π½ΡƒΡ‚Ρ€ΠΈ Square, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π½Π° :

ПослС: Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ число Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Β«ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΏΡ€ΠΎΠΏΒ» ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Board Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° пропсов это Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π² React-прилоТСниях Β«ΠΏΠ΅Ρ€Π΅Ρ‚Π΅ΠΊΠ°ΡŽΡ‚Β» ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ взаимодСйствиС с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«XΒ». Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Ρ‚Π΅Π³ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ возвращаСтся ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render() ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Square:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square Β«Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»Β», Ρ‡Ρ‚ΠΎ ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ»ΠΈ ΠΈ поставили Β«XΒ». Для «запоминания» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ состояниС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ React ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ состояниС, устанавливая this.state Π² конструкторС. this.state Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ΅ свойство React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, опрСдСляСмоС ΠΈΠΌ самим. Π”Π°Π²Π°ΠΉΡ‚Π΅ сохраним Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Square Π² this.state ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅.

Π‘ΠΏΠ΅Ρ€Π²Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ конструктор ΠΊ классу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ render ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Square для отобраТСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния ΠΈΠ· состояния ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅:

Когда Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ setState Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, React Ρ‚Π°ΠΊ ΠΆΠ΅ автоматичСски обновляСт Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ React Devtools для Chrome ΠΈ Firefox позволяСт Π²Π°ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° вашСго Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ React DevTools позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ пропсы ΠΈ состояниС Π²Π°ΡˆΠΈΡ… React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ПослС установки React DevTools, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° любой элСмСнт страницы ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Inspect ( ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’ΠΊΠ»Π°Π΄ΠΊΠΈ React (Β«⚛️ ComponentsΒ» ΠΈ Β«⚛️ ProfilerΒ») появятся справа. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«⚛️️ ComponentsΒ» для просмотра Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½Π° CodePen Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ нСсколько дСйствий:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты для создания ΠΈΠ³Ρ€Ρ‹ крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ. Для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Β«XΒ» ΠΈ Β«OΒ», Π° Ρ‚Π°ΠΊΠΆΠ΅ способ опрСдСлСния побСдитСля.

БСйчас ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС состояниС ΠΈΠ³Ρ€Ρ‹. Для выявлСния побСдитСля ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх 9 ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Board просто запросит Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Square Π΅Π³ΠΎ состояниС. Π₯отя Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² React Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΌΡ‹ Π΅Π³ΠΎ Π½Π΅ одобряСм. Из-Π·Π° этого ΠΊΠΎΠ΄ становится Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ, ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ошибки ΠΈ услоТняСт Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. ВмСсто этого, Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ состояния ΠΈΠ³Ρ€Ρ‹ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Board, Π° Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Square. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Board ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Square, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ, пСрСдавая ΠΏΡ€ΠΎΠΏ. ΠœΡ‹ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ число Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ состояниС Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ состояниС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ элСмСнтам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пропсов. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

ΠŸΠΎΠ΄ΡŠΡ‘ΠΌ состояния Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ случаСм ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ конструктор ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Board ΠΈ установим Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Π² Π²ΠΈΠ΄Π΅ массива ΠΈΠ· 9 элСмСнтов, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ значСниями null. Π­Ρ‚ΠΈ 9 элСмСнтов ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ 9 ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°ΠΌ:

ПозТС, ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ поля, массив this.state.squares Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠœΠ΅Ρ‚ΠΎΠ΄ renderSquare Π²Π½ΡƒΡ‚Ρ€ΠΈ Board сСйчас выглядит Ρ‚Π°ΠΊ:

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° Square. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Board Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ…. Нам Π½ΡƒΠΆΠ΅Π½ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Square смоТСт ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ состояниС Board. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ состояниС являСтся ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС Board Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· Square.

ВмСсто этого, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ ΠΈΠ· Board Π² Square Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π΅Ρ‘ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Square, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ»ΠΈ. ИзмСним ΠΌΠ΅Ρ‚ΠΎΠ΄ renderSquare Π² Board-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π½Π°:

ΠœΡ‹ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ элСмСнт Π½Π° нСсколько строк для удобства чтСния ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ скобки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ JavaScript Π½Π΅ вставлял Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой послС return ΠΈ Π½Π΅ Π»ΠΎΠΌΠ°Π» наш ΠΊΠΎΠ΄.

ПослС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square выглядит Ρ‚Π°ΠΊ:

Атрибут onClick DOM-элСмСнта ΠΈΠΌΠ΅Π΅Ρ‚ для React особоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это встроСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ Square Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ пропсы ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏ Square onClick ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Board handleClick Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅. Но Π² React Π΅ΡΡ‚ΡŒ соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… β€” on[Имя события] для пропсов, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° события, ΠΈ handle[Имя события] для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… события.

ΠŸΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° Square ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleClick Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² класс Board:

ПослС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΡ‹ снова ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ. Однако Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ состояниС хранится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Board, Π° Π½Π΅ Π² Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Square. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния Board ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Square. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ состояния всСх ΠΊΠ»Π΅Ρ‚ΠΎΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Board ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ побСдитСля.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Square большС Π½Π΅ содСрТат состояния, ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ всС значСния ΠΈΠ· Board ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ°Ρ…. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… React ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Square Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся управляСмым. Им ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСт Board.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½Π°?

Π’ Ρ†Π΅Π»ΠΎΠΌ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ измСнСнию Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” ΠΌΡƒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ) Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ устанавливая Π½ΠΎΠ²Ρ‹Π΅ значСния. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ, которая содСрТит измСнСния.

ΠœΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

ИзмСнСниС Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΉ

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅, Π½ΠΎ Π±Π΅Π· ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ (Ρ‚.Π΅. измСнСния) исходных Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. НиТС описаны прСимущСства Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

Π‘Π»ΠΎΠΆΠ½ΠΎΠ΅ становится простым

Π˜ΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ слоТной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΡ‰Π΅. НиТС ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Β«ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ», которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ³Ρ€Ρ‹ ΠΈ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡΒ» ΠΊ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ Ρ…ΠΎΠ΄Π°ΠΌ. Π­Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° для ΠΈΠ³Ρ€, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ дСйствия часто встрСчаСтся Π² прилоТСниях. ИзбСТаниС прямой ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… позволяСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ состояния ΠΈΠ³Ρ€Ρ‹ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.

Работая с ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ довольно слоТно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ измСнСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π°ΠΌ трСбуСтся ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ со своСй послСднСй ΠΊΠΎΠΏΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ со всСм Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Если нСизмСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся, отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ измСнился.

Как React ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством ΠΈΠΌΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² React чистыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. НСизмСняСмыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ shouldComponentUpdate() ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ чистыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм Square Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

Π—Π°ΠΌΠ΅Π½ΠΈΠΌ класс Square ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ:

ΠœΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ this.props Π½Π° props ΠΎΠ±Π° Ρ€Π°Π·Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π°Π»ΠΈΡΡŒ ΠΊ Π½ΠΈΠΌ.

Когда ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Square Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ onClick= <() =>this.props.onClick()> Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ onClick= (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС скобок с ΠΎΠ±Π΅ΠΈΡ… сторон).

Нам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² нашСй ΠΈΠ³Ρ€Π΅ β€” Π½Π° ΠΏΠΎΠ»Π΅ нСльзя ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«OΒ».

По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установим ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ…ΠΎΠ΄ Π·Π° Β«XΒ». ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, измСняя Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора Board:

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΎΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ…ΠΎΠ΄, xIsNext (Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΊ Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, Π° состояниС ΠΈΠ³Ρ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ. ΠœΡ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleClick класса Board, для инвСрсии значСния xIsNext :

ПослС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Β«XΒ» ΠΈ Β«OΒ» Π±ΡƒΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ тСкст Β«statusΒ» Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render класса Board Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π» ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΊ Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

ПослС этих ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ наш Board-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΊ Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΈ большС Π½Π΅Ρ‚ Ρ…ΠΎΠ΄ΠΎΠ². Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°:

Π‘ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ calculateWinner(squares) Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render класса Board, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Π²Ρ‹ΠΈΠ³Ρ€Π°Π» Π»ΠΈ ΠΈΠ³Ρ€ΠΎΠΊ. Если Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ сообщСниС Β«Π’Ρ‹ΠΈΠ³Ρ€Π°Π» XΒ» ΠΈΠ»ΠΈ Β«Π’Ρ‹ΠΈΠ³Ρ€Π°Π» OΒ». Π—Π°ΠΌΠ΅Π½ΠΈΠΌ объявлСниС status Π² render ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleClick класса Board для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»ΠΈΠΊΠ°, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» ΠΈΠ»ΠΈ Ссли ΠΊΠ»Π΅Ρ‚ΠΊΠ° ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°:

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ ΠΈΠ³Ρ€Π° Π² крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ. И ΠΊΡ€ΠΎΠΌΠ΅ этого Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ основы React. ΠŸΠΎΡ…ΠΎΠΆΠ΅, настоящий ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒ здСсь это Π²Ρ‹.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π’ качСствС послСднСго упраТнСния Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Β«Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅Β» β€” ΠΊ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ Ρ…ΠΎΠ΄Π°ΠΌ ΠΈΠ³Ρ€Ρ‹.Β»

БохраняСм ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ…ΠΎΠ΄ΠΎΠ²

Но ΠΌΡ‹ использовали slice() для создания Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ массива squares послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ…ΠΎΠ΄Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Π½ΠΈΠΌ, Π½Π΅ измСняя ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ массива squares ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ…ΠΎΠ΄Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ сдСланы.

ΠŸΠΎΠ΄ΡŠΡ‘ΠΌ состояния. Π‘Π½ΠΎΠ²Π°

Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ history Π² состоянии ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Game позволяСт Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ squares ΠΈΠ· состояния Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Board. Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Β«ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»ΠΈ состояниС» ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Square Π² Board, ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· Board Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Game. Π­Ρ‚ΠΎ даст ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Game ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Board ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Board Π½Π° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Ρ…ΠΎΠ΄ΠΎΠ² ΠΈΠ· history :

Для Π½Π°Ρ‡Π°Π»Π° Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Game Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Board Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ render ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Game, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ послСднюю запись ΠΈΠ· истории для опрСдСлСния ΠΈ отобраТСния статуса ΠΈΠ³Ρ€Ρ‹:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Game Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ статус ΠΈΠ³Ρ€Ρ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render Π²Π½ΡƒΡ‚Ρ€ΠΈ Board. ПослС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ render ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Board выглядит Ρ‚Π°ΠΊ:

ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Π΅ Ρ…ΠΎΠ΄Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ записываСм Ρ…ΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹, ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ список ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ…ΠΎΠ΄ΠΎΠ².

Π Π°Π½Π΅Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ React-элСмСнты β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ JavaScript. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ нашСго прилоТСния. Для Ρ€Π΅Π½Π΄Π΅Ρ€Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… записСй Π² React ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив React-элСмСнтов.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ map ΠΊ history Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° render Game-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

Warning: Each child in an array or iterator should have a unique Β«keyΒ» prop. Check the render method of Β«GameΒ».

Π§Ρ‚ΠΎ пСрСводится ΠΊΠ°ΠΊ:

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΏ Β«keyΒ». ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ render Π² Game

Π”Π°Π²Π°ΠΉΡ‚Π΅ обсудим, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚.

Когда ΠΌΡ‹ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ список, React Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½ΠΎΠΌ элСмСнтС списка. Если ΠΌΡ‹ обновляСм список, React Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ измСнилось. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ порядок ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ элСмСнты списка.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ измСнСния ΠΎΡ‚

ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π΅ списка, React Π±Π΅Ρ€Ρ‘Ρ‚ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта списка ΠΊΠ»ΡŽΡ‡ ΠΈ ΠΈΡ‰Π΅Ρ‚ Π΅Π³ΠΎ Π² элСмСнтах ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ списка. Если Π² Π½ΠΎΠ²ΠΎΠΌ спискС Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ, React создаёт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Если Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ спискС отсутствуСт ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ спискС, React ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Если Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ пСрСмСщаСтся. ΠšΠ»ΡŽΡ‡ΠΈ Π² React Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ React ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°ΠΌΠΈ. Если Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° мСняСтся ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ ΠΈ создан вновь с Π½ΠΎΠ²Ρ‹ΠΌ состояниСм.

ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ строитС динамичСскиС списки. Если Ρƒ вас Π½Π΅Ρ‚ подходящСго ΠΊΠ»ΡŽΡ‡Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ рСструктуризации Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρƒ вас появился.

Если ΠΊΠ»ΡŽΡ‡ Π½Π΅ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½, React ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ индСкс элСмСнта Π² массивС Π² качСствС ΠΊΠ»ΡŽΡ‡Π°. ИспользованиС индСксов массива ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты списка ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ вставкС/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов. Явная ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° key= ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с индСксами массивов, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

ΠšΠ»ΡŽΡ‡ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ глобально. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ ΠΈΡ… Π±Ρ€Π°Ρ‚ΡŒΡΠΌΠΈ ΠΈ сёстрами.

РСализация ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π’ истории ΠΈΠ³Ρ€Ρ‹ крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: это Π½ΠΎΠΌΠ΅Ρ€ Ρ…ΠΎΠ΄Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π₯ΠΎΠ΄Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ свой порядок, Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² сСрСдину ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ бСзопасно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ индСксом Π² качСствС ΠΊΠ»ΡŽΡ‡Π°.

Π‘Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ stepNumber: 0 Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС Game Π²Π½ΡƒΡ‚Ρ€ΠΈ constructor :

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ jumpTo ΠΌΡ‹ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ свойство history состояния. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ обновлСния состояния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ, ΠΏΡ€ΠΎΡ‰Π΅ говоря, React ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ setState Π±Π΅Π· измСнСния ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… свойств. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

НаконСц, ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ render для Game, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вмСсто Ρ€Π΅Π½Π΄Π΅Ρ€Π° послСднСго Ρ…ΠΎΠ΄Π° ΠΎΠ½ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ» Ρ…ΠΎΠ΄, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ stepNumber :

Если ΠΌΡ‹ ΠΊΠ»ΠΈΠΊΠ½Π΅ΠΌ Π½Π° любой Ρ…ΠΎΠ΄ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ истории, ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, показывая ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ выглядСло послС этого Ρ…ΠΎΠ΄Π°.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали ΠΈΠ³Ρ€Ρƒ Π² крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ, которая:

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π°! ΠœΡ‹ надССмся, Π²Ρ‹ чувствуСтС ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² своих знаниях ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ React.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ здСсь: Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ свои Π½ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π² React, Π²ΠΎΡ‚ ΠΏΠ°Ρ€Π° ΠΈΠ΄Π΅ΠΉ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ (пСрСчислСны Π² порядкС увСличСния слоТности):

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

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

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