React js Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅: понятноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… / Π‘Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ RUVDS.com / Π₯Π°Π±Ρ€

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

How to ReactJS / Π₯Π°Π±Ρ€

Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, экосистСма Π²ΠΎΠΊΡ€ΡƒΠ³ React (ΠΊΠ°ΠΊ ΠΈ фронтэнда Π² Ρ†Π΅Π»ΠΎΠΌ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½.

  • Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, React Π±Ρ‹Π» Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° экспСртов ΠΈ Ρ€Π°Π½Π½ΠΈΡ… послСдоватСлСй
  • Facebook ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ исходный ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сам, Ρ‚. С. Π½Π΅ Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹-мСньшС-Ρ‡Π΅ΠΌ-Facebook
  • ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π³Π°ΠΉΠ΄ΠΎΠ² ΠΏΠΎ React ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½ΠΎΠΉ слоТности

Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅, я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с HTML, CSS ΠΈ JavaScript.

БущСствуСт мноТСство ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Ρ… совСтов ΠΏΠΎ React. Π—Π°Ρ‡Π΅ΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ мСня?

Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Facebook, которая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° React. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π΅ Π² Facebook, Π° Π² нСбольшом стартапС, поэтому ΠΌΠΎΠ³Ρƒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния своСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π° Π½Π΅ Facebook.

ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС строится Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ стСкС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ этот стСк, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ экосистСма React’Π° каТСтся Π½Π΅ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΠΎΠΉ, это ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° постоянно ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² этом порядкС, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ пропуская ΠΈ Π½Π΅ изучая Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ:

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

Π’Π°ΠΊΠΆΠ΅, Π² React-сообщСствС Π΅ΡΡ‚ΡŒ нСсколько Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ «супСр-соврСмСнными ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈΒ» (Β«bleeding edgeΒ»). Π­Ρ‚ΠΈ Ρ‚Π΅ΠΌΡ‹ интСрСсны, Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π½ΠΈΡ… слоТно, ΠΎΠ½ΠΈ ΠΌΠ΅Π½Π΅Π΅ популярны, Ρ‡Π΅ΠΌ Ρ‚Π΅ΠΌΡ‹ Π²Ρ‹ΡˆΠ΅, ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ большСй части ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

БущСствуСт Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с React, Π½ΡƒΠΆΠ΅Π½ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ инструмСнтарий. Но это Π½Π΅ Ρ‚Π°ΠΊ. Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ copy-paste HTML шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ достаточно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² .html Ρ„Π°ΠΉΠ»Π΅ ΠΈ сразу ΠΆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Для этого шага Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ инструмСнтарий, ΠΈ Π½Π΅ стоит ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π·Π° Π½Π΅Π³ΠΎ, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ с основами React.

Π― Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ самый простой способ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ React, это ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π».

npm это ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Node.js ΠΈ самый популярный способ для front-end Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ JavaScript ΠΊΠΎΠ΄ΠΎΠΌ. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ систСму CommonJS ΠΈ позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, написанныС JavaScript. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ CommonJS, ΠΈΠ»ΠΈ CommonJS Spec Wiki для большСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ CommonJS API.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ инструмСнтария Π² экосистСмС React доступны ΠΊΠ°ΠΊ CommonJS ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npm.

По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ количСству тСхничСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½, использованиС CommonJS ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всСго Π² npm) Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π’Π°ΠΌ понадобится JavaScript β€œbundler” для сборки этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² .js Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² страницу Ρ‚Π΅Π³ΠΎΠΌ <script>.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ JavaScript сборщиков ΡΠ²Π»ΡΡŽΡ‚ΡΡ webpack ΠΈ browserify. Они ΠΎΠ±Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ, Π½ΠΎ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ webpack, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΠΈΡ‡, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ докумСнтация ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ, Ρƒ мСня Π΅ΡΡ‚ΡŒ шаблон для быстрого старта, ΠΈ я написал how-to Π³Π°ΠΉΠ΄ ΠΏΠΎ webpack для Π±ΠΎΠ»Π΅Π΅ слоТных кСйсов.

Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ: CommonJS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ require() для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅Ρ‡Ρ‚ΠΎ связанноС с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ require.js. По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ количСству тСхничСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½, я ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ require.js. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ популярСн Π² срСдС React.

ΠšΡ€ΠΎΠΌΠ΅ JSX (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π² Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ React), Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ нСсколько Π·Π°Π±Π°Π²Π½Ρ‹Ρ… синтаксичСских конструкций Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π­Ρ‚ΠΎ называСтся ES6, самая послСдняя вСрсия JavaScript, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹. Из-Π·Π° Π½ΠΎΠ²ΠΈΠ·Π½Ρ‹, ES6 Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ доступСн Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, Π½ΠΎ ваш сборщик ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ JavaScript послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ настройки.

Π’Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ES6 для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° React, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Ρ‹ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ES6-классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ способом создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Facebook) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ React.createClass().

β€œΠžΠ΄Π½ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ прилоТСния” (Single-page applications ΠΈΠ»ΠΈ SPA) β€” соврСмСнная ΠΌΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π²Π΅Π±-странички ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ΅, JavaScript, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° страницС, обновляСт Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, Π½Π΅ пСрСзагруТая страницу Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ адрСсной строкой осущСствляСтся router (Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠΌ).

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

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€, Ссли Π²Ρ‹ Π½Π΅ создаСтС single-page application. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² всС Ρ€Π°Π²Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ с ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ большого прилоТСния.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Flux. ΠŸΡ€ΠΎ Π½Π΅Π³ΠΎ имССтся *Ρ‚ΠΎΠ½Π½Π°* Π΄Π΅Π·ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² сСти.

ΠšΡƒΡ‡Π° людСй ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с модСлью Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ для этого ΠΈΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Flux. Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Flux Π½Π° свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Flux Π΄ΠΎΠ»ΠΆΠ½ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы.

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

Π’Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ понадобится Flux. Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ ΠΎΠ½ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Flux, самой популярной ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Flux-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ являСтся Redux. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ *мноТСство* Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ ΡΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, Π½ΠΎ ΠΌΠΎΠΉ совСт β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ.

ΠŸΡ€Π΅-React, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй использовали CSS-прСпроцСссоры Ρ‚ΠΈΠΏΠ° SASS для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ стилСй. React Π΄Π΅Π»Π°Π΅Ρ‚ написаниС ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² простым, Ρ‚Π°ΠΊΠΆΠ΅ упрощая ΠΈ написаниС стилСй. МногиС ΠΈΠ· сообщСства (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ мСня) ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π½Π°Π΄ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ совсСм ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ CSS.

Π’ силу ряда ΠΏΡ€ΠΈΡ‡ΠΈΠ½, это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ бСзумная идСя. Она услоТняСт написаниС media queries, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ограничния ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с React, ΠΏΠΈΡˆΠΈΡ‚Π΅ css-стили Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ почувствуСтС Ρ‚ΠΎ, ΠΊΠ°ΠΊ React Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ. Одна ΠΈΠ· популярных, это BEM. Π― Π±Ρ‹ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΠ·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ CSS-прСпроцСссора, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ React прСдоставляСт Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ стилСй (Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²) ΠΈ ваш JavaScript-сборщик ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй для вас (Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π½Π° OSCON). ВмСстС с Ρ‚Π΅ΠΌ, React, ΠΊΠ°ΠΊ ΠΈ любая другая JavaScript Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ с Π»ΡŽΠ±Ρ‹ΠΌ CSS-прСпроцСссором.

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ часто называСтся Β«ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΒ» ΠΈΠ»ΠΈ Β«ΠΈΠ·ΠΎΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΒ» JS. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ ваши React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… Π² статичСский HTML Π½Π° сСрвСрС. Π­Ρ‚ΠΎ ускоряСт ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страницы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° скачаСтся вСсь JS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ UI, Π° React, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HTML, сгСнСрированный Π½Π° сСрвСрС, Π½Π΅ рСндСря Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π²Π°ΠΌ понадобится, Ссли Π²Ρ‹ посчитаСтС, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ страницы слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ, ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² поисковиках. Π”Π°, Google индСксируСт ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Π½ΠΎ ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΡΠ½Π²Π°Ρ€ΡŒ 2016 ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ это Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ влияСт Π½Π° Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€Π°.

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

Immutable.js прСдоставляСт Π½Π°Π±ΠΎΡ€ структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π² React-прилоТСниях. Π­Ρ‚ΠΎ отличная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ, скорСС всСго, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ с ростом вашСго прилоТСния, Π½ΠΎ ΠΎΠ½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ являСтся Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π­Ρ‚ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство AJAX-запросов. Они всС Π΅Ρ‰Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со слишком большим количСством AJAX запросов, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Relay ΠΈΠ»ΠΈ Falcor.


UPD. НСмного ΠΏΠΎΡ‡ΠΈΡ‰Π΅Π½ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π°Π±Π·Π°Ρ†Π΅Π², спасибо vtambourine Π·Π° ΠΏΡ€Π°Π²ΠΊΠΈ
UPD2. Много ΠΌΠ΅Π»ΠΊΠΈΡ… грамматичСских исправлСний, спасибо wiygn

Π‘Ρ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² React.js: ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство / Π₯Π°Π±Ρ€

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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ нСбольшой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎ использованиС стилизованных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π΄Π°Π»Π΅Π΅ β€” БК) Π² React.

Π‘Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… слов.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ БК?

БК β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для React ΠΈ React Native для создания ΠΈ управлСния CSS.

Π”Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ относится ΠΊ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Β«CSS-in-JSΒ», ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ опрСдСляСтС CSS прямо Π² JavaScript-Ρ„Π°ΠΉΠ»Π΅ (Ρ‚.Π΅. Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π² случаС с React).

О популярности этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² срСдС React-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 8 ΠΌΠ»Π½ скачиваний Π² мСсяц ΠΈΠ· npm ΠΈ 30 тыс Π·Π²Π΅Π·Π΄ Π½Π° GitHub.

РазумССтся, для знакомства со БК Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ хотя Π±Ρ‹ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… Π·Π½Π°Ρ‚ΡŒ React.


ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°ΠΌΠΈ БК являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ CSS. Π”Π°, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ CSS Π² JS-Ρ„Π°ΠΉΠ»Π΅, Π½ΠΎ синтакис ΠΎΡ‚ этого Π½Π΅ мСняСтся
  • ΠŸΡ€ΠΈ использовании БК автоматичСски Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²Π΅Π½Π΄ΠΎΡ€Π½Ρ‹Π΅ прСфиксы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΡ€ΠΎΡΡΠ±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ
  • ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ стили Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ
  • Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ названия классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСобходимости использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ³ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Π‘Π­Πœ

Установка БК

Для использования БК Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… сначала ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ:

npm i styled-components

Π”Π°Π»Π΅Π΅ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ:

import styled from 'styled-components'

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

БозданиС БК

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, ΠΈΠ»ΠΈ быстро создайтС Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ npx create-react-app app-name ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, App.js.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π΅Π³ΠΎ наш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ БК:

// App.js
import React from 'react'
import styled from 'styled-components'

// БК
const Button = styled.a`
    background-color: teal;
    color: white;
    padding: 1rem 2rem;
`

const App = () => {
    return (
        <Button>Кнопка</Button>
    )
}

export default App

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

  • ОбъявляСм Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° посрСдством const Button
  • styled прСдоставляСт Π½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» БК
  • ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Β«aΒ» послС styled. Π­Ρ‚ΠΎ HTML-Ρ‚Π΅Π³ Β«aΒ». Π’ БК ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ HTML-Ρ‚Π΅Π³ΠΈ (section, h2, div ΠΈ Ρ‚.Π΄.)

, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Π² App, это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали БК Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Однако это ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ Π΄Π°ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ) ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Button.js):

// Button.js
import styled from 'styled-components'

const Button = styled.a`
    background-color: teal;
    color: white;
    padding: 1rem 2rem;
`

export default Button

ПослС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Button ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:

// App.js
import React from 'react'
import styled from 'styled-components'
// ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ
import Button from './Button'

const App = () => {
    return (
        <Container>
            <Button>Кнопка</Button>
        </Container>
    )
}

export default App

Π“ΠΎΡ‚ΠΎΠ²ΠΎ.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создали свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ БК.

ИспользованиС пропсов для рСдактирования БК

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Button, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Ρ€Π°Π·Π½Ρ‹Π΅ стили Π² зависимости ΠΎΡ‚ назначСния ΠΊΠ½ΠΎΠΏΠΊΠΈ (primary β€” главная ΠΈΠ»ΠΈ основная, secondary β€” второстСпСнная ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ, danger β€” ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚.Π΄.)

Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пропсы.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠΌ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ пропса:

// App.js
import React from 'react'
import styled from 'styled-components'
import Button from './Button'

const App = () => {
    return (
        <>
            <Button>Кнопка</Button>
            <Button primary>Главная ΠΊΠ½ΠΎΠΏΠΊΠ°</Button>
        </>
    )
}

export default App


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС сокращСнного синтаксиса Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° (>).

ПослС этого добавляСм динамичСскиС стили Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Button:

// Button.js
import styled from 'styled-components'

const Button = styled.a`
    display: imline-block;
    border-radius: 3px;
    padding: 0.5rem 0;
    margin: 0.5rem 1rem;
    width: 11rem;
    border: 2px solid white;
    background: ${props => props.primary ? 'white' : 'palevioletred'};
    color: ${props => props.primary ? 'palevioletred' : 'white'};
`

export default Button

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ CSS-свойства Π² зависимости ΠΎΡ‚ пропса.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ background: ${props => props.primary? ‘white’: ‘palevioletred’} ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли пропс Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ρ‚ΠΎ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π»Ρ‹ΠΌ, Π° Ρ†Π²Π΅Ρ‚ тСкста β€” palevioletred.

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ { css } ΠΈΠ· styled-components:

// Button.js
import styled, { css } from 'styled-components'

const Button = styled.a`
display: inline-block;
    border-radius: 3px;
    padding: 0.5rem 0;
    margin: 0.5rem 1rem;
    width: 11rem;
    background: transparent;
    color: white;
    border: 2px solid white;

    ${props => props.primary && css`
        background: white;
        color: palevioletred;
    `}
`

export default Button

Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСскиС стили для Ρ€Π°Π·Π½Ρ‹Ρ… пропсов.

НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ стили для danger:

// Button.js
import styled, { css } from 'styled-components'

const Button = styled.a`
display: inline-block;
    border-radius: 3px;
    padding: 0.5rem 0;
    margin: 0.5rem 1rem;
    width: 11rem;
    background: transparent;
    color: white;
    border: 2px solid white;

    ${props => props.primary && css`
        background: white;
        color: palevioletred;
    `}

    ${props => props.danger && css`
        backround: red;
        color: white;
    `}
`

export default Button

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΠΉ ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ?

ИспользованиС ΠΌΠ΅Π΄ΠΈΠ°-запросов

Для этого слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄ΠΈΠ°-запросы Π² шаблон (Π²Π½ΡƒΡ‚Ρ€ΡŒ шаблонного ΠΈΠ»ΠΈ строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°):

// Button.js
const Button = styled.a`
    display: inline-block;
    border-radius: 3px;
    padding: 0.5rem 0;
    margin: 0.5rem 1rem;
    width: 9rem;
    background: transparent;
    color: white;
    border: 2px solid white;

    @media (min-width: 768px) {
        padding: 1rem 2rem;
        width: 11rem;
    }

    @media (min-width: 1024px) {
        padding: 1.5rem 2.5rem;
        width: 13rem;
    }
`

export default Button

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° псСвдосСлСкторов

Π­Ρ‚ΠΎ дСлаСтся ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΌΠ΅Π΄ΠΈΠ°-запросами.

НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ навСдСния курсора Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ (псСвдосСлСктор hover):

// Button.js
import styled from 'styled-components'

const Button = styled.a`
    display: inline-block;
    border-radius: 3px;
    padding: 0.5rem 0;
    margin: 0.5rem 1rem;
    width: 9rem;
    background: transparent;
    color: white;
    border: 2px solid white;

    :hover {
        border-color: green;
    }
`

export default Button

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… стилСй

Основная ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ модСль React β€” всС Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Для этого интСрфСйс прилоТСния разбиваСтся Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части, Π° Π·Π°Ρ‚Π΅ΠΌ эти части ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ прилоТСния.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ряд прСимущСств, Π½ΠΎ сущСствуСт ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ стили для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²? Π’.Π΅. ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ стили?

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚ для всСго тСкста
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½ для всСх страниц
  • ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Π΅ стили (Ρ‚.Π΅. стили, устанавливаСмыС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)

Π’ БК для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция createClodabStyle.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ основной ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прилоТСния.

Π’Π°ΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, являСтся App.js.

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² Π½Π΅Π³ΠΎ createClodabStyle ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стили Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ GlobalStyle (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ):

// App.js
import React from 'react'
import styled, { createGlobalStyle } from 'styled-components'
import { Container, Nav, Content } from '../components'

const GlobalStyle = createGlobalStyle`
    body {
        margin: 0;
        padding: 0;
        background: teal;
        font-family: Open-Sans, Helvetica, Sans-Serif;
    }
`

const App = () => {
    return (
        <Container>
            <Nav />
            <Content />
        </Container>
    )
}

export default App

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ созданный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Π½Π°Ρ‡Π°Π»ΠΎ App:

// App.js
import React from 'react'
import styled, { createClodabStyle } from 'styled-components'
import { Container, Nav, Content } from '../components'

const GlobalStyle = createGlobalStyle`
    body {
        margin: 0;
        padding: 0;
        background: teal;
        font-family: Open-Sans, Helvetica, Sans-Serif;
    }
`

const App = () => {
    return (
        <>
            <GlobalStyle />
            <Container>
                <Nav />
                <Content />
            </Container>
        </>
    )
}

export default App

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ GlobalStyle Π² качСствС ΡƒΠ·Π»Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ DOM являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для использования Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… стилСй.

НадСюсь, ΡΡ‚Π°Ρ‚ΡŒΡ Π±Ρ‹Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΡŽ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ReactΒ Hooks / Π₯Π°Π±Ρ€

Если Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Twitter, Π²Ρ‹, вСроятнСС всСго, Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ Hooks β€Š-β€Š это новая Ρ„ΠΈΡ‡Π° React, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Hooks.

Одна ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΈΠ΄Π΅ΠΉ для понимания Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Hooks ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ state ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности React Π±Π΅Π· написания классов.

Π₯отя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎ-ориСнтированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° позволяСт Π½Π°ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ view Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ΄Π½Π° ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ сталкиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² state, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Когда Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ состояния, Π½Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈ это ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² конструкторС ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.
Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚:

  • ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка (High Order Components)
  • render props

Но ΠΎΠ±Π° эти ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΈΠΌΠ΅ΡŽΡ‚ нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹.

Hooks Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСх этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, позволяя Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ state, context, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, ref ΠΈ Ρ‚. Π΄., Π±Π΅Π· написания классов.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ погрузимся, Π²Π°ΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Hooks API Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°, ΠΈ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π΅Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎ описана мотивация, стоящая Π·Π° Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Hooks.
UPD ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π±Ρ‹Π»Π° написана Π΅Ρ‰Π΅ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° это API Π±Ρ‹Π»ΠΎ Π² alpha тСстировании, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ React Hooks ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию. НСобратимыС измСнСния, привнСсСнныС Π² Ρ€Π΅Π»ΠΈΠ· (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°Π»ΡŒΡ„ΠΎΠΉ) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π½ΠΈΠ·Ρƒ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ»ΠΈ Π² Ρ€Π΅Π»ΠΈΠ·Π½Ρ‹Ρ… Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°Ρ….

Как Hooks соотносятся с классами

Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с React, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… способов ΠΏΠΎΠ½ΡΡ‚ΡŒ Hooksβ€Š-β€ŠΡΡ‚ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ воспроизвСсти ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании классов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Hooks.

Напомним, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ написании классов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π°ΠΌ часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  • Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ state
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ componentDidMount() ΠΈ componentDidUpdate()
  • Доступ ΠΊ context (static contextType)

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Hooks ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ воспроизвСсти Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…:

  • Для доступа ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useState() hook
  • ВмСсто использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ componentDidMount() ΠΈ componentDidUpdate(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useEffect() hook.
  • ВмСсто static свойства contextType ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useContext() hook.

Для использования Hooks Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° послСдняя вСрсия React

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Hooks прямо сСйчас, смСнив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ react ΠΈ react-dom Π² вашСм package.json Π½Π° Β«nextΒ».

State являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ React. Он позволяСт Π½Π°ΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ классов state ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”ΠΎ Hooks, state ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ использовался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅β€Š-β€ŠΠΊΠ»Π°ΡΡΠ΅, Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Hooks позволяСт Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ состояниС ΠΈ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ построим ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ с подсвСткой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ†Π²Π΅Ρ‚ Π² зависимости ΠΎΡ‚ значСния state. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ hook useState().

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (ΠΈ исполняСмый ΠΏΡ€ΠΈΠΌΠ΅Ρ€)β€Š-β€ŠΠΌΡ‹ рассмотрим, Ρ‡Ρ‚ΠΎ происходит Π½ΠΈΠΆΠ΅. По ΠΊΠ»ΠΈΠΊΡƒ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° CodeSandBox.

Наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚β€Š-β€ŠΡΡ‚ΠΎΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ

Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π°, ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° useState ΠΈΠ· React. UseStateβ€Š β€” β€ŠΡΡ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ способ использования возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ this.state.
Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π° Π½Π΅ классом. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ!

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись state

Π’Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ useState для создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² state:

useState ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ state ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π»ΡŽΠ±Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ значСния (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ state Π² классах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ).

Как Π²ΠΈΠ΄Π½ΠΎ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ useState.

  • ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, light Π² этом случаС, являСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ state (ΠΊΠ°ΠΊ this.state)
  • Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅β€Š-β€ŠΡΡ‚ΠΎ функция, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для обновлСния значСния state(ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ значСния) (ΠΊΠ°ΠΊ this.setState).

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… устанавливаСт state Π² Ρ€Π°Π·Π½Ρ‹Π΅ значСния, 0 ΠΈΠ»ΠΈ 1.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ примСняСм ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… Π²ΠΎ view:

React отслСТиваСт state

Когда наТимаСтся ΠΊΠ½ΠΎΠΏΠΊΠ° Β«OnΒ», ВызываСтся функция setOn, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ setLight(1). Π’Ρ‹Π·ΠΎΠ² setLight(1) обновляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ light для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΌ, Π½ΠΎ React отслСТиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° происходит Ρ€Π΅-Ρ€Π΅Π½Π΄Π΅Ρ€ этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС (light), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ Π»Π°ΠΌΠΏΠ° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ устанавливаСм Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ SVG Π² зависимости ΠΎΡ‚ значСния light. Если light Ρ€Π°Π²Π΅Π½ 0 (Π²Ρ‹ΠΊΠ».), Π’ΠΎ для fillColor установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ # 000000 (Π° Ссли Ρ€Π°Π²Π΅Π½ 1 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ), fillColor устанавливаСтся Π½Π° # ffbb73).

Multiple States

Π₯отя ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ этого Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько state, Π²Ρ‹Π·Π²Π°Π² useState Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°. НапримСр:

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•.Β 

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния ΠΏΡ€ΠΈ использовании hooks, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ hooks Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ вашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΌ. Β«ΠŸΡ€Π°Π²ΠΈΠ»Π° hooksΒ» для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ useEffect() Hook

UseEffect Hook позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ side эффСкты Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…. ΠŸΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌΠΈ эффСктами ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ обращСния ΠΊ API, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ DOM, подписка Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉβ€Š-β€ŠΠ²ΡΠ΅, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, лишь Π±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Β«ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅Β» дСйствиС.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ useEffect() Hook, React Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС послС Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useEffect() для Π²Ρ‹Π·ΠΎΠ²Π° API ΠΈ получСния ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ useState, Ρ‚Π°ΠΊ ΠΈ useEffect, ΠΈ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° API Π² state.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обновлСния state

Π§Ρ‚ΠΎΠ±Ρ‹ Β«ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эффСкт», Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ наш action Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ useEffect, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Β«actionΒ» эффСкт ΠΊΠ°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ useEffect.
Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ обращаСмся ΠΊ API, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠΌΠ΅Π½. Когда возвращаСтся response, ΠΌΡ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² JSON, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ setNames(data) для установки state.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ использовании Effects

Однако стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΎΠ± использовании useEffect.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, ΠΎ Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ наш useEffect Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅! Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒΡŽ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ плохая Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹, вСроятно, Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ HTTP-запрос для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (ΠΊΠ°ΠΊ Π² этом случаС).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ effects, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ useEffect, ΠΊΠ°ΠΊ ΠΈ Π² этом случаС. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ useEffectβ€Š-β€ŠΡΡ‚ΠΎ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Β«Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΒ», Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эффСкт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ пустой массив Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ React, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ этот effect ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ effect, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈ функция useState, useEffect позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько экзСмпляров, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ useEffect.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ useContext() Hook

Π’ΠΎΡ‡ΠΊΠ° контСкста

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π² React- это способ для Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ context: ΠΏΡ€ΠΈ создании React прилоТСния Π²Π°ΠΌ часто Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ значСния с Π²Π΅Ρ€Ρ…Π° вашСго Π΄Π΅Ρ€Π΅Π²Π° React Π²Π½ΠΈΠ·. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ context, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ props Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎ Π½ΠΈΡ… Π·Π½Π°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° props Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ «нСсвязанных» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ласково называСтся props drilling.

React Context Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ props drilling, позволяя Π²Π°ΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ значСниями Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², с Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ эти значСния.

useContext() ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС context

Π‘ useContext Hook использованиС context стаСт ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ.

Ѐункция useContext() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сontext, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ возвращаСтся ΠΈΠ· React.createContext(), Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ контСкста. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ context JediContext создаСтся с использованиСм React.createContext().

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ JediContext.Provider Π² нашСм App ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΈ устанавливаСм Ρ‚Π°ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«LukeΒ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ любой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ context Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ смоТСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Display(), ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ useContext, пСрСдавая Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ JediContext.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ context, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠ· React.createContext, ΠΈ ΠΎΠ½ автоматичСски Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Когда Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ, этот Hook автоматичСски сработаСт с послСдним Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ context.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° context Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали JediContext Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π½ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Display ΠΈ App Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас похоТая ситуация, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно: «Как ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ссылку Π½Π° JediContext ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ?Β»

ΠžΡ‚Π²Π΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ экспортируСт JediContext.

НапримСр, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» context.js, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π² App.js (ΠΈ Display.js) Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

Бпасибо, Π”Π΅ΠΉΠ²)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ useRef()Β Hook

Refs прСдоставляСт способ доступа ΠΊ React элСмСнтам , созданным Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ render().
Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² React refs, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² React refs.
Ѐункция useRef() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ref.

useRef() ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ с input

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования useRef() hook.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ useRef() Π² сочСтании с useState(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ input Π² Ρ‚Π΅Π³ p.

Ref создаСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ nameRef. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ nameRef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² input, Π·Π°Π΄Π°Π² ΠΊΠ°ΠΊ ref. По сущСству, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТимоС поля Π²Π²ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ доступно Ρ‡Π΅Ρ€Π΅Π· ref.

Кнопка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события onClick, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ submitButton. Ѐункция submitButton Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ setName (созданный Ρ‡Π΅Ρ€Π΅Π· useState).

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ с использованиСм hookState, setName Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для установки state name. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ имя ΠΈΠ· Ρ‚Π΅Π³Π° input, ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nameRef.current.value.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ useRef Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большС, Ρ‡Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ref.

ИспользованиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Hooks

Одной ΠΈΠ· самых ΠΊΡ€ΡƒΡ‚Ρ‹Ρ… особСнностСй Hooks являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, создавая собствСнный Hook.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создадим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ setCounter() Hook, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ настраиваСмыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обновлСния state!

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅, этот useCounter Hook ΠΎΡ‚ react-use ΠΈ useCounter ΠΎΡ‚ ΠšΠ΅Π½Ρ‚Π°

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ useCounter, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ нашСго hook.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ useCounter ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Hooks! НачнСм с создания Π½ΠΎΠ²ΠΎΠ³ΠΎ состояния Hook Ρ‡Π΅Ρ€Π΅Π· useState.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ опрСдСляСм Π΄Π²Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: increment ΠΈ decrement, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ setCount ΠΈ соотвСтствСнно ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ count.

НаконСц, ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ссылки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для взаимодСйствия с нашим Hook.

Π’: Π§Ρ‚ΠΎ происходит, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ массива с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ?

О: Ну, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Π΅Ρ‰Π΅ΠΉ Π² Hooks, соглашСния API Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹. Но Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ здСсь, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив, Π³Π΄Π΅:

  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚β€Š-β€ŠΡ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Hook
  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚β€Š-β€ŠΡΡ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для взаимодСйствия с Hook.

Π­Ρ‚ΠΎ соглашСниС позволяСт Π²Π°ΠΌ Π»Π΅Π³ΠΊΠΎ Β«ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒΒ» Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Hookβ€Š-β€ŠΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ myCount.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, ΠΈΠ· своСго кастомного Hook.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ increment ΠΈ decrement ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ onClick, Π² нашСм view. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ, счСтчик обновляСтся ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ отобраТаСтся (ΠΊΠ°ΠΊ myCount) Π²ΠΎ view.

НаписаниС тСстов для ReactΒ Hooks

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты для hooks, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для тСстирования react-testing-library.

react-testing-libraryβ€Š-β€ŠΠΎΡ‡Π΅Π½ΡŒ лСгковСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для тСстирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² React. Она являСтся Ρ€Π°ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ react-dom and react-dom/test-utils. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ react-testing-library Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ваши тСсты Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСпосрСдствСнно с DOM ΡƒΠ·Π»Π°ΠΌΠΈ.

Π‘ тСстированиСм hooks Π΅Ρ‰Π΅ Π½Π΅ всС понятно. Π’ настоящСС врСмя Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ hook ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ. ВмСсто этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ свой hook ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

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

ВСстированиС useState() Hook

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ написания тСстов для useState Hook. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ тСстируСм большС Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° useState. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«OffΒ» УстанавливаСт состояниС Π² 0 ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«OnΒ» УстанавливаСт состояниС Π² 1.

Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…Π΅Π»ΠΏΠ΅Ρ€ΠΎΠ² ΠΈΠ· react-testing-library ΠΈ тСстируСмого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

  • render, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ наш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Он рСндСрится Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСтся ΠΊ document.body
  • getByTestId ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ DOM элСмСнт ΠΏΠΎ data-testid
  • fireEvent, это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для «запуска» событий DOM. Она прикрСпляСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠΊ document ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ события DOM Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Π”Π°Π»Π΅Π΅, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ утвСрТдСния тСста, ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для элСмСнтов с data-testid ΠΈ ΠΈΡ… значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² тСстС. Π‘ΠΎ ссылками Π½Π° элСмСнты Π½Π° DOM ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ fireEvent для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅.

ВСст провСряСт, Ρ‡Ρ‚ΠΎ, Ссли наТимаСтся onButton, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ state устанавливаСтся Π² 1, Π° ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° offButton state Ρ€Π°Π²Π΅Π½ 1.

ВСстированиС useEffect() HookΒ 

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ useEffect Hook. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Ρ‚Π°ΠΊΠΆΠ΅ сохраняСтся Π² localStorage. Π€Π°ΠΉΠ» index.js Π² CodeSandbox Π½ΠΈΠΆΠ΅ содСрТит Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для добавлСния элСмСнтов Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСсты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ количСства элСмСнтов ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² localStorage, ΠΈ Π΄Π°ΠΆΠ΅ Ссли страница ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»Π°ΡΡŒ, количСство элСмСнтов ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ всС Π΅Ρ‰Π΅ остаСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ тСста ΠΌΡ‹ сначала устанавливаСм cartItem Π² localStorage Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ количСство элСмСнтов ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Ρ€Π°Π²Π½ΠΎ 0. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠ°ΠΊ container Ρ‚Π°ΠΊ ΠΈ rerender ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° App Ρ‡Π΅Ρ€Π΅Π· дСструктурированиС. Rerender позволяСт Π½Π°ΠΌ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страницы.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ссылки Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ‚Π΅Π³ p, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ ΠΈ устанавливаСт ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, тСст Π·Π°Ρ‚Π΅ΠΌ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° addButton ΠΈ провСряСт, являСтся Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ счСтчик ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Ρ€Π°Π²Π½Ρ‹ΠΌ 1 ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ страницу, послС Ρ‡Π΅Π³ΠΎ, Ссли ΠΎΠ½ провСряСт, установлСно Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ localStorage, cartItem, Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° resetButton ΠΈ провСряСт, установлСно Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ количСство элСмСнтов ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Ρ€Π°Π²Π½Ρ‹ΠΌ 0.

ВСстированиС useRef ()Β Hook

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ useRef Hook, ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ useRef, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Π² качСствС основы для тСста. UseRef ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния значСния ΠΈΠ· поля Π²Π²ΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ state. Π€Π°ΠΉΠ» index.js Π² CodeSandbox Π½ΠΈΠΆΠ΅ содСрТит Π»ΠΎΠ³ΠΈΠΊΡƒ Π²Π²ΠΎΠ΄Π° значСния ΠΈ Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ тСста ΠΌΡ‹ устанавливаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΏΠΎΠ»Π΅ input, Ρ‚Π΅Π³ p, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ref, ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ввСсти Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ newName. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² тСстС.

ΠœΠ΅Ρ‚ΠΎΠ΄ fireEvent.change ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Π²ΠΎΠ΄Π° значСния Π² ΠΏΠΎΠ»Π΅ input, ΠΈ Π² этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ name, сохранСнноС Π² константС newName, послС Ρ‡Π΅Π³ΠΎ наТимаСтся ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ.

Π—Π°Ρ‚Π΅ΠΌ тСст провСряСт, соотвСтствуСт Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ref послС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ newName.

НаконСц, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ «НСт ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ тСстов, поздравляСм!Β» сообщСниС Π² консоли.

РСакция сообщСства Π½Π°Β Hooks

Π‘ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΊΠ°ΠΊ прСдставили React Hooks, сообщСство Π±Ρ‹Π»ΠΎ Π² восторгС ΠΎΡ‚ этой Ρ„ΠΈΡ‡ΠΈ, ΠΈ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования React Hooks. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· основных:

  • На этом сайтС собрана коллСкция React Hooks.
  • react-use, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая поставляСтся с ΠΊΡƒΡ‡Π΅ΠΉ React Hooks.
  • Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° CodeSandbox ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ useEffect Hook для создания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ react-spring
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования useMutableReducer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Π°ΠΌ просто ΠΌΡƒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€Π΅.
  • Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° CodeSandbox, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ слоТноС комплСксноС использования связи Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ-Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ΠΈ использованиС Ρ€Π΅Π΄ΡŒΡΠ΅Ρ€ΠΎΠ².
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, построСнный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Hooks
  • Другая коллСкция React Hooks, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ hooks для Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ устройств ΠΈ видимости Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹Β hooks

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ hooks, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм React ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Они пСрСчислСны Π½ΠΈΠΆΠ΅:

  • useStateβ€Š β€” β€ŠΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с доступом ΠΊ state Π² Π½ΠΈΡ….
  • useEffectβ€Š β€” β€ŠΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ side эффСкты. Side эффСктами ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ DOM, подписка Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий.
  • useContext β€Š- β€ŠΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½ΠΈΡ… чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с контСкстом.
  • useReducerβ€Š β€” β€ŠΠ΄Π°Π΅Ρ‚ Π½Π°ΠΌ ссылку Π½Π° Redux-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π΅Π΄ΡŒΡŽΡΠ΅Ρ€
  • useRefβ€Š β€” β€ŠΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ чистыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ измСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ref.
  • useMemo β€Š- β€ŠΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° сохранСнного значСния.
  • useCallback β€” β€ŠHook ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΌΠ΅ΠΌΠΎΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π»Π»Π±Π΅ΠΊΠ°.
  • useImperativeMethods β€Š-β€Š кастомизируСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ экзСмпляра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΏΡ€ΠΈ использовании ref.
  • useMutationEffectsβ€Š β€” β€ŠΠ°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ useEffect Hook Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ DOM-ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ.
  • useLayoutEffect β€Š- β€ŠΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для чтСния ΠΌΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ· DOM ΠΈ синхронного Ρ€Π΅-Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ hooks β€Š-β€Š ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования.

Π‘ΡƒΠ΄ΡƒΡ‰Π΅Π΅ hooks

Π‘Π°ΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π² Hooks Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±ΠΎΠΊ ΠΎ Π±ΠΎΠΊ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния, Π²Π½Π΅Π΄Ρ€ΡΡŽΡ‰ΠΈΠ΅ Hooks. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ,β€Š-β€ŠΡΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ React Π΄ΠΎ вСрсии ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ hooks.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Hooks всС Π΅Ρ‰Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° React Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π»Π°, Ρ‡Ρ‚ΠΎ API ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. Π‘Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½Ρ‹.

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ для классов появлСниС Hooks? Как сообщаСт ΠΊΠΎΠΌΠ°Π½Π΄Π° React, классы всС Π΅Ρ‰Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ React ΠΈ, скорСС всСго, Π±ΡƒΠ΄ΡƒΡ‚ Π΅Ρ‰Π΅ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя.

Π£ нас Π½Π΅Ρ‚ ΠΏΠ»Π°Π½ΠΎΠ² ΠΎΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ классы. Π’ Facebook Ρƒ нас Π΅ΡΡ‚ΡŒ дСсятки тысяч ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², написанных классами, ΠΈ, ΠΊΠ°ΠΊ ΠΈ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΌΡ‹ Π½Π΅ собираСмся ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ…. Но Ссли сообщСство React ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ Hooks, Π½Π΅Ρ‚ смысла ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… способа записи ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² β€” β€ŠΠ”ΡΠ½ Абрамов

Π₯отя ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ API-интСрфСйс Hooks являСтся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ сСгодня, сообщСство одобряСт идСю Hooks, поэтому я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ останутся с Π½Π°ΠΌΠΈ Π½Π°Π΄ΠΎΠ»Π³ΠΎ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

  • Команда React сдСлала Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ React Hooks, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ здСсь
  • API ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ здСсь.
  • Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ постоянный RFC, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ Ρ‚ΡƒΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

UPD

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°:

БСгодня ΠΊΠ°ΠΊ Π²Ρ‹Π·Π½Π°Π΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π»ΠΈΠ·ΠΈΠ»ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ React 16.8 ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Hooks API. Π’ Ρ‡Π΅ΠΉΠ½Π΄ΠΆΠ»ΠΎΠ³Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ нСсовмСстимыС измСнСния с Π°Π»ΡŒΡ„Π°-вСрсиСй:

β€” ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ useMutationEffect.

β€” ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ useImperativeMethods Π² useImperativeHandle.

β€” ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ€Π΅Π½Π΄Π΅Ρ€Π° ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² useState ΠΈ useReducer Hooks.

β€” Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ сравнСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² useEffect/useMemo/useCallback Hooks.

β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Object.is Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для сравнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ useState ΠΈ useReducer.

β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ рСндСрятся Π΄Π²Π°ΠΆΠ΄Ρ‹ Π² Strict Mode (DEV-only).

β€” ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ lazy initialization API для useReducer Hook.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

React | ΠžΡΠ½ΠΎΠ²Ρ‹ JSX

ΠžΡΠ½ΠΎΠ²Ρ‹ JSX

ПослСднСС обновлСниС: 21.10.2017

JSX прСдставляСт способ описания Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° посрСдством ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° JavaScript ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ XML. JSX являСтся Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ способом создания интСрфСйса.

Π’Π°ΠΊ, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ ΠΌΡ‹ рассмотрСли созданиС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ самого ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ прилоТСния, Π³Π΄Π΅ использовался ΠΊΠΎΠ΄ JSX:


ReactDOM.render(
	<h2>Hello React</h2>,  // элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ
	document.getElementById("app")    // Π³Π΄Π΅ ΠΌΡ‹ этот элСмСнт Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ
)

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JSX опрСдСлялся элСмСнт h2, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.

Однако ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, JSX позволяСт Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² эти элСмСнты ΠΊΠΎΠ΄ JavaScript. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страницу:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Hello React</title>
</head>
<body>
    <div> </div>
     
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
    
   <script type="text/babel">
    ReactDOM.render(
        <h3>2 + 2 = {2 + 2}</h3>,
        document.getElementById("app")
    )
   </script>
</body>
</html>

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Π² ΠΊΠΎΠ΄ html ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ выполняСтся, Π° Π½Π° Π²Π΅Π±-станицС ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π’ выраТСниях ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Hello React</title>
</head>
<body>
    <div> </div>
     
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
    
   <script type="text/babel">
    const user = {
        id : 5,
        age: 33,
        firstName: 'Tom',
        lastName: 'Smit',
        getFullName: function(){ 
            return `${this.firstName} ${this.lastName}`;
        }
    };
    ReactDOM.render(
        <div id={user.id}>
            <p>ПолноС имя: {user.getFullName()}</p>
            <p>Возраст: {user.age}</p>
            <p>ВрСмя Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: {new Date().toLocaleTimeString()}</p>
        </div>,
        document.getElementById("app")
    )
   </script>
</body>
</html>

Π—Π΄Π΅ΡΡŒ Π² элСмСнт вводятся значСния ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° user, Π»ΠΈΠ±ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Date.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JSX слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ряд ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² частности, Π² JSX для установки класса примСняСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ className, Π° Π½Π΅ class.
Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ style Π² качСствС значСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ javascript.
И Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Π² JSX ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ camel-case, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ стилСвоС свойство для ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, свойство font-family,
Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ свойство Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ стиля Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ fontFamily, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ дСфис отбрасываСтся, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ слова начинаСтся с
Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹. НапримСр:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Hello React</title>
    <style>
        .user-info{
            padding: 8px;
            border: 1px #ccc solid;
        }
    </style>
</head>
<body>
    <div> </div>
     
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
    
   <script type="text/babel">
    const user = {
        id : 5,
        age: 33,
        firstName: 'Tom',
        lastName: 'Smit',
        getFullName: function(){ 
            return `${this.firstName} ${this.lastName}`;
        }
    };
    const userClassName = "user-info";
    const styleObj = {
        color:'red', 
        fontFamily:'Verdana'
    };
    ReactDOM.render(
        <div className={userClassName}  style={styleObj}>
                <p>ПолноС имя: {user.getFullName()}</p>
                <p>Возраст: {user.age}</p>
        </div>,
        document.getElementById("app")
    )
   </script>
</body>
</html>

А Ссли Π± ΠΌΡ‹ опрСдСляли ΡΡ‚ΠΈΠ»ΡŒ inline, Ρ‚ΠΎ это выглядСло Π±Ρ‹ Ρ‚Π°ΠΊ:

<div className={userClassName}  style={{color:'red', fontFamily:'Verdana'}}>

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React JS? ΠŸΠΎΡ‡Π΅ΠΌΡƒ стартапы ΠΈ прСдприятия Π»ΡŽΠ±ΡΡ‚ React JS для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ?

Π Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ! БСйчас это стало ΠΌΠΎΠ΄Π½Ρ‹ΠΌ словом Π² сообщСствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² интСрфСйса. React JS стал синонимом Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π‘ΡƒΠ΄ΡŒ Ρ‚ΠΎ стартап ΠΈΠ»ΠΈ прСдприятиС; всС стрСмятся ΠΊ React для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Богласно опросу, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Stack Overflow, React Π±Ρ‹Π» самой любимой интСрфСйсной срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π²ΠΎ всСм ΠΌΠΈΡ€Π΅.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ React JS ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± вашСго бизнСса Π·Π° счСт увСличСния взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² 2 Ρ€Π°Π·Π°, ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ сначала ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React JS.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React JS?

React JS — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, поддСрТиваСмая Facebook ΠΈ сообщСством ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ основном ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² аспСктС Model View Controller ΠΈΠ»ΠΈ MVC.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стартапы ΠΈ прСдприятия Π»ΡŽΠ±ΡΡ‚ React JS (10 основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½)?

# 1 Virtual DOM

Virtual DOM — это соврСмСнноС Ρ‡ΡƒΠ΄ΠΎ для бизнСса.Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кэш-ΠΏΠ°ΠΌΡΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π»ΠΎΠΊΠ΅ памяти, Ρ‡Ρ‚ΠΎ позволяСт Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ DOM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

# 2 Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ВрСмя Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° Ρ€Ρ‹Π½ΠΎΠΊ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… элСмСнтов любого бизнСса, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ стартап ΠΈΠ»ΠΈ прСдприятиС.

Компании всСгда ΠΈΡ‰ΡƒΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π² срок ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π°.

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

НаличиС Ρ‚Π°ΠΊΠΎΠΉ совмСстимости ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ компаниям ΡƒΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ присутствиС Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

# 3 Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

ВСхнология, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ нСсколько Π»Π΅Ρ‚. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ быстром Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ инструмСнты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Благодаря ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ прСдприятий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Facebook ΠΈ Instagram, ΡˆΠ°Π½ΡΡ‹ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ устарССт, Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½Ρ‹.React JS остаСтся ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π»ΠΈΡ†ΠΎΠΌ растущСй ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Vue JS ΠΈ Angular JS.

# 4 Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ интСрфСйс

React JS прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ интСрфСйса ΠΈ функциями проСктирования.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π½ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² React JS для обновлСния ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйса Π² соотвСтствии с вашими вкусами, ТСланиями ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ двумя способами: Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π° ΠΈ Π² Π²ΠΈΠ΄Π΅ Π³Π½Π΅Π·Π΄.

# 5 Advance Performance

React JS — профСссионал, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ касаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… устройствах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚, смартфон ΠΈΠ»ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

Он Π»Π΅Π³ΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ Π²Π΅Π±-страницу Π½Π° любом ΠΈΠ· упомянутых Π²Ρ‹ΡˆΠ΅ устройств. React Π΄Π΅Π»Π°Π΅Ρ‚ это, автоматичСски обновляя прилоТСния Π½Π° страницС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ для пСрСрисовки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

# 6 ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования

Одна ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ React являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π΅ простотС. По мнСнию ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², это ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Angular JS.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° React JS ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, администрирования рСсурсов.React JS — это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ ΠΈ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для экспСртов ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов.

Π₯отя React JS прост Π² использовании, ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми функциями ΠΈ возмоТностями ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ³ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠ΅ Π²Π΅Π±-страницы.

# 7 ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, React JS дСйствуСт ΠΊΠ°ΠΊ камСнь, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ±ΠΈΡ‚ΡŒ Π΄Π²ΡƒΡ… Π·Π°ΠΉΡ†Π΅Π² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React JS ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Angular, Backbone, jQuery ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ React JS Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, доступныС Π² этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ….

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, эти Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ спСктром Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΉ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² React.

# 8 Гибкая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Компании восприняли появлСниС React JS ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅. Они Π΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ это просто Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая внСсСт свой Π²ΠΊΠ»Π°Π΄ Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Но ΠΏΡ€Π°Π²Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ React Π½Π΅ просто ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния, мСшавшиС процСссу Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

React ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π° стратСгия управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΈ Π³ΠΈΠ±ΠΊΠΈΡ… способов.

# 9 SEO-Friendly

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ прСдприятий ΠΈ стартапов Π² монопольном бизнСсС, каТдая компания Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ SEO Π½Π° своих сайтах. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокиС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² поисковых систСмах. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Node JS, React ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° сСрвСрах.

Он ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ поисковым систСмам ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ индСксированиС Π²Π΅Π±-страниц.

Π₯отя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΎΠ½ΠΈ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ ΠΈ Π½Π΅ подходят для критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

React JS Π±Ρ‹Π» ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½ ΠΈ протСстирован нСсколькими организациями ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ для создания высококачСствСнного ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сайта для SEO.

# 10 Доступ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ

React JS являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых популярных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π² сообщСствС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° React JS. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, с React JS ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания JavaScript ΠΈ интСрфСйсной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ React JS — это ваш ΠΏΡƒΡ‚ΡŒ для Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Начиная с поиска подходящСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ заканчивая обслуТиваниСм ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ прилоТСния, React JS обСспСчиваСт Π±Π΅Π·ΡƒΠΏΡ€Π΅Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ для бизнСса.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ стартапом, стрСмящимся ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΈΠ»ΠΈ прСдприятиСм, стрСмящимся ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ коэффициСнт конвСрсии, React JS ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми возмоТностями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π² достиТСнии Π²Π°ΡˆΠΈΡ… бизнСс-Ρ†Π΅Π»Π΅ΠΉ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React JS

Π’: 1 — React JS — это интСрфСйс ΠΈΠ»ΠΈ сСрвСрная срСда?

Ans : React JS — это интСрфСйсный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, созданный Facebook. Как ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйсный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ бэкСндов, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Rails, PHP, Node.js ΠΈ Ρ‚. Π”., И ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· любой Π²Π΅Π±-сСрвСр, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ NGINX, Apache ΠΈ Ρ‚. Π”.

Q: 2 — ΠŸΠΎΡ‡Π΅ΠΌΡƒ React Π»ΡƒΡ‡ΡˆΠ΅?

Ans : Одна ΠΈΠ· основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ React Π»ΡƒΡ‡ΡˆΠ΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½, Ρ‡Π΅ΠΌ настоящий ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.Π­Ρ‚ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΏΠΎ сути, дСйствуСт ΠΊΠ°ΠΊ Π°Π³Π΅Π½Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ самим Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ.

Q: 3 — ΠšΠ°ΠΊΠΎΠ²Ρ‹ прСимущСства использования React JS?

Ans : Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ прСимущСств использования React JS, ΠΈ ΠΌΡ‹ пСрСчислили ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ прСимущСства Π½ΠΈΠΆΠ΅:

  • Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄
  • SEO-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ быстрый Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²
  • ΠŸΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ toolset
  • И Ρ‚Π°ΠΊ далСС…

Q: 4 — ΠšΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ React JS?

Ans : React JS создаСтся ΠΈ поддСрТиваСтся Facebook, ΠΈ сСгодня Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ 8183 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎ извСстных ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Uber, Airbnb, Netflix, Twitter ΠΈ Ρ‚. Π”.

.

Learn LifeCycle, Components, JSX с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ

Guru99

  • Home
  • Testing

      • Back
      • Agile Testing
      • BugZilla
      • Cucumber
      • 000 9000 JS 9000 Testing 9000 9000 9000 JS 9000 9000 Testing 9000
        • Назад
        • JUnit
        • LoadRunner
        • Π ΡƒΡ‡Π½ΠΎΠ΅ тСстированиС
        • МобильноС тСстированиС
        • Mantis
        • ΠŸΠΎΡ‡Ρ‚Π°Π»ΡŒΠΎΠ½
        • QTP
        • Назад
        • 00050005000500050005
        • 000 RPM

          SoapUI

        • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ тСстированиСм
        • TestLink
    • SAP

        • Назад
        • ABAP
        • APO
        • ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ
        • Basis
        • BODS
        • BI
        • BPC
        • CO
        • Назад
        • CRM
        • Crystal Reports
        • MM5000
        • Crystal Reports
        • Заработная ΠΏΠ»Π°Ρ‚Π°
        • Назад
        • PI / PO
        • PP
        • SD
        • SAPUI5
        • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
        • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ
        • Successfactors
        • SAP Tutorials
      • 8 SAP Tutorials
    • 8
    • Apache
    • AngularJS
    • ASP.Net
    • C
    • C #
    • C ++
    • CodeIgniter
    • Π‘Π£Π‘Π”
    • JavaScript
    • Назад
    • Java
    • JSP
    • Kotlin
    • Linux
    • Linux
    • Kotlin
    • Linux
    • js

    • Perl
    • Назад
    • PHP
    • PL / SQL
    • PostgreSQL
    • Python
    • ReactJS
    • Ruby & Rails
    • Scala
    • SQL
    • 000

      0004 SQL

    • UML
    • VB.Net
    • VBScript
    • Π’Π΅Π±-слуТбы
    • WPF
  • ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Π΅!

      • Назад
      • БухгалтСрский ΡƒΡ‡Π΅Ρ‚
      • Алгоритмы
      • Android
      • Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½
      • Business Analyst
      • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-сайта
      • CCNA
      • ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ вычислСния
      • 000
      • 000 9005

        0004 COBOL

        9000 Compiler

        9000 .

        10 Π³Π»Π°Π²Π½Ρ‹Ρ… прСимущСств использования React.js

        [Π°ΠΏΡ€Π΅Π»ΡŒ 2018: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ]

        Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Π°Ρ экосистСма постоянно развиваСтся ΠΈ измСняСтся ΠΈΠ·ΠΎ дня Π² дСнь. НСкоторыС инструмСнты становятся «бСстсСллСрами» с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ становятся Ρ‚ΡƒΠΏΠΈΠΊΠΎΠΌ.

        Reactjs ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ бСстсСллСром. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, запущСнная Π΅Ρ‰Π΅ Π² 2013 Π³ΠΎΠ΄Ρƒ, быстро Π·Π°Π²ΠΎΠ΅Π²Π°Π»Π° ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ. БСгодня ΠΎΠ½ поддСрТиваСтся Facebook вмСстС с сообщСством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².Π•Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Apple, PayPal, Netflix, Π° Π±ΠΎΠ»Π΅Π΅ 32 тысяч Π²Π΅Π±-сайтов созданы с использованиСм Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° React JS.

        reactjs-advantages-business-statistics-google

        ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ React Π² ΠΌΠΈΡ€Π΅ Π·Π° послСдниС ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚

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

        Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React js:

        # 1 Он ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ процСсс написания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

        JSX — это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ синтаксиса для JavaScript, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ написаниС Π²Π°ΡˆΠΈΡ… собствСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ HTML ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ЀактичСски, это Π½Π°Π±ΠΎΡ€ ярлыков для написания React.createElement с нСсколькими ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ΄Π΅Π»Π°ΡŽΡ‚ ваш исходный ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅.

        Π₯отя JSX часто являСтся ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ споров, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ большого объСма ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½Ρ‹Ρ… структурах ΠΈ упрощая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² HTML Π² Π΄Π΅Ρ€Π΅Π²ΡŒΡ ReactElement. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ React ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прСдупрСТдСния ΠΈ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ΄Π°.

        # 2 ΠŸΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ дальнСйшСС обслуТиваниС.

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

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

        Π­Ρ‚Π° структура ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² являСтся ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° вопрос Β«Π·Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React?Β» для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΈ Walmart — ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ…. ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Ρ… ΠΌΠ°Ρ€ΠΎΠΊ ΠΈ Ρ„ΠΈΠ»ΠΈΠ°Π»ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Walmart Brazil, Walmart Chile, Asda, Massmart, Sam’s Club ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.Π£ всСх ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Π΅ΡΡ‚ΡŒ собствСнноС ΠΎΠ½Π»Π°ΠΉΠ½-присутствиС, Π½ΠΎ всС ΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх Π±Ρ€Π΅Π½Π΄ΠΎΠ² — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, элСмСнты Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠΏΠ»Π°Ρ‚Ρ‹, ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ…Π»Π΅Π±Π½Ρ‹Π΅ ΠΊΡ€ΠΎΡˆΠΊΠΈ. Π—Π΄Π΅ΡΡŒ пригодится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями ΠΈ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ установку ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², компания Π²Π²Π΅Π»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ стандарты кодирования ΠΈ Π² настоящСС врСмя пСрСмСщаСтся Π² рССстр npm.

        react-for-startups-library-app-development

        # 3 ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ

        ΠŸΡ€ΠΈ создании высоконагруТСнного прилоТСния Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ структура повлияСт Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния.Π”Π°ΠΆΠ΅ новСйшиС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Π΄Π²ΠΈΠΆΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ отсутствиС Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… ΡƒΠ·ΠΊΠΈΡ… мСст, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ DOM (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру, ΠΈ Π΄Π°ΠΆΠ΅ нСбольшиС измСнСния Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΠΆΠ°ΡΠ½ΡƒΡŽ Ρ€ΡΠ±ΡŒ Π² интСрфСйсС. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Facebook прСдставила Virtual DOM — Π² настоящСС врСмя ΠΎΠ΄Π½ΠΎ ΠΈΠ· прСимущСств использования React для высоконагруТСнных ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

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

        # 4 Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

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

        # 5 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для SEO

        Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ прСимущСством React js являСтся Π΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ поисковых систСм ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с тяТСлым JavaScript. Π’ качСствС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ React ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° сСрвСрС, отобраТая ΠΈ возвращая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ DOM Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Π²Π΅Π±-страницу.

        Π₯отя Π² Google ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… поисковых систСм, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Yahoo, Bing ΠΈΠ»ΠΈ Baidu. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Open Graph, Twitter Cards ΠΈ Ρ‚. Π”., ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Facebook, Slack ΠΈΠ»ΠΈ Twitter Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ваш JS ΠΈ Π² основном зависят ΠΎΡ‚ SSR.

        react-framework-web-app-development

        # 6 ΠŸΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

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

        React Developer Tools — это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, доступноС ΠΊΠ°ΠΊ для Chrome, Ρ‚Π°ΠΊ ΠΈ для Firefox.Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° иСрархиями Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΈ свойства.

        # 7 БущСствуСт React Native для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

        React ΠΌΠΎΠΆΠ½ΠΎ смСло Π½Π°Π·Π²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Β«ΡƒΡ‡ΠΈΡΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· — пиши Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ°ΠΊ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ½Π° слСдуСт ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ шаблонам проСктирования, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ процСсс ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ простой JavaScript ΠΈ React, Π²Ρ‹ смоТСтС ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ iOS ΠΈ Android.

        Π‘Ρ€Π΅Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… прСимущСств React js Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ наши Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ React Native ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡˆΠΈΡ€Π½ΡƒΡŽ экосистСму. Π§Ρ‚ΠΎ касаСтся фактичСского использования React Native, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния, ΠΊΠ°ΠΊ Skype, Tesla, Airbnb ΠΈ WalMart. И Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΠ± Instagram ΠΈ Facebook — настоящих Π½ΠΎΠ²Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… послСдоватСлях.

        # 8 Он сфокусирован ΠΈ прост Π² освоСнии

        Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π²Π΅Ρ‰Π°Ρ…: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ React js? — Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ; это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая фокусируСтся Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ ΠΈ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это V Π² шаблонС MVC (модСль — прСдставлСниС — ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€), поэтому ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ большС инструмСнтов для создания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π›ΡŽΠ±ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС ΠΎΠ± основах ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прСвосходноС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π½Π΅ΠΉ изучСния руководства ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

        ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ всС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ· основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ использования React js. Он Π½Π΅ навязываСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… шаблонов, шаблонов, слоТных Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ MVVM ΠΈΠ»ΠΈ MVC. Π­Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прСдставлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт JS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚.ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, — это ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с состояниями ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², свойствами ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ.

        react-web-app-development

        # 9 Она поддСрТиваСтся ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ сообщСством

        Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° React Π±Ρ‹Π»Π° создана для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования, Π° Π·Π°Ρ‚Π΅ΠΌ стала доступной для всСго ΠΌΠΈΡ€Π°. Π’ настоящСС врСмя Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Facebook ΠΈ Instagram, Π° Ρ‚Π°ΠΊΠΆΠ΅ внСшниС экспСрты. НапримСр, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ React GitHub насчитываСт Π±ΠΎΠ»Π΅Π΅ 1100 участников, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ свои вопросы Π½Π° Stack Overflow, дискуссионном Ρ„ΠΎΡ€ΡƒΠΌΠ΅, Reactiflux Chart, Freenode IRC, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ….

        # 10 Π•Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠ· списка Fortune 500, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ стартапы.

        Высячи ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Reactjs для своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, сайтов ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ React js? — ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Π·Ρ†Π°ΠΌΠΈ горячих Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ создали ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ React Native: Airbnb, Walmart Labs, Tesla, Tencent QQ (с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 829 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй), Baidu Mobile (с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 600 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ), Bloomberg, li.st, Гироскоп, Доставка.com, JD.com, GoDaddy ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π‘Π°ΠΉΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ React: BBC, Netflix, Dropbox, Coursera, IMDb, PayPal, Dailymotion, Chrysler, American Express, Intuit, Khan Academy, Lyft, Atlassian, New York Times, Reddit ΠΈ дСсятки Π΄Ρ€ΡƒΠ³ΠΈΡ…. Один ΠΈΠ· Π½Π°ΡˆΠΈΡ… Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Mochi — Pet Supplies & Food, Ρ‚Π°ΠΊΠΆΠ΅ построСн с использованиСм React Native ΠΈ Π² настоящСС врСмя Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹.

        Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ React JS? А ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹?

        React ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ заслуТиваСт вашСго внимания, особСнно Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ одностраничным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ быстрым, ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.Однако эту JS-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ слоТно Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ срСдством».

        Настройка React ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Vue.js, хотя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ. Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с Reactjs ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ довольно слоТным ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ. Если Π²Ρ‹ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ TypeScript ΠΈΠ»ΠΈ шаблонов, Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Angular ΠΈΠ»ΠΈ Vue.

        Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

        Учитывая ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы React js, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ трСмя словами: бСзопасный, ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ.Основная идСя этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: Β«ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ прилоТСния с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈΒ», ΠΈ ΠΎΠ½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту Π·Π°Π΄Π°Ρ‡Ρƒ. Он прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ (DOM), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‡Π΅ΠΌ настоящий. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ простоС созданиС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ JSX, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΡƒΡŽ структуру ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ пСрСчислСнных Π²Ρ‹ΡˆΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΊ для стартапов, Ρ‚Π°ΠΊ ΠΈ для прСдприятий.

        .

  • Leave a Comment

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