Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π΅Π°ΠΊΡ‚ Ρ‡Ρ‚ΠΎ это

React

JavaScript-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ

React Π΄Π΅Π»Π°Π΅Ρ‚ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ созданиС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ простыС прСдставлСния для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ состояния вашСго прилоТСния, ΠΈ React Π±ΡƒΠ΄Π΅Ρ‚ эффСктивно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прСдставлСния Π΄Π΅Π»Π°ΡŽΡ‚ ваш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым ΠΈ Π»Π΅Π³Ρ‡Π΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Основан Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ инкапсулированныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ своим состояниСм, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΠΉΡ‚Π΅ ΠΈΡ… для создания слоТных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° написана Π½Π° JavaScript вмСсто использования шаблонов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· своё ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ состояниС Π²Π½Π΅ DOM.

Π£Ρ‡ΠΈΡ‚Π΅ΡΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· β€” ΠΏΠΈΡˆΠΈΡ‚Π΅ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ

ΠœΡ‹ Π½Π΅ строим ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части вашСго тСхнологичСского стСка, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности Π² React Π±Π΅Π· пСрСзаписи ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

React Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° сСрвСрС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Node ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ задСйствован Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… прилоТСниях с использованиСм React Native.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

JSX нСобязатСлСн ΠΈ Π½Π΅ Π΅Π³ΠΎ трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² React. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ REPL Babel, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ JavaScript, созданный Π½Π° этапС компиляции JSX.

Loading code example.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с состояниСм

Loading code example.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Loading code example.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ внСшниС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹

React β€” Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ прСдоставляСт Ρ…ΡƒΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ remarkable, внСшняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Markdown, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

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

React

A JavaScript library for building user interfaces

Declarative

React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.

Declarative views make your code more predictable and easier to debug.

Component-Based

Build encapsulated components that manage their own state, then compose them to make complex UIs.

Since component logic is written in JavaScript instead of templates, you can easily pass rich data through your app and keep state out of the DOM.

Learn Once, Write Anywhere

We don’t make assumptions about the rest of your technology stack, so you can develop new features in React without rewriting existing code.

React can also render on the server using Node and power mobile apps using React Native.

A Simple Component

JSX is optional and not required to use React. Try the Babel REPL to see the raw JavaScript code produced by the JSX compilation step.

Loading code example.

A Stateful Component

Loading code example.

An Application

Loading code example.

A Component Using External Plugins

React allows you to interface with other libraries and frameworks. This example uses remarkable, an external Markdown library, to convert the

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

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.

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

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

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

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

Π’ этом Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ крСстики-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° 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 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *