{"componentChunkName":"component---src-templates-docs-js","path":"/docs/add-react-to-a-website.html","result":{"data":{"markdownRemark":{"html":"<p>Використовуйте лише ту частину React, яка вам потрібна.</p>\n<p>З самого початку React був спроектований для поступового вбудовування і <strong>ви можете використати ту частину React, яка вам потрібна</strong>. Можливо, ви тільки хочете “оживити” елементи існуючого сайту. React-компоненти є чудовим способом зробити це.</p>\n<p>Більшість сайтів в інтернеті не є і не мають бути односторінковими додатками. Спробувати React в невеликих місцях вашого сайту можна за допомогою <strong>декількох рядків коду і без інструментів збірки</strong>. За бажанням, ви зможете потім поступово поширювати React на сайті або залишити в декількох динамічних віджетах.</p>\n<hr>\n<ul>\n<li><a href=\"#add-react-in-one-minute\">Додаємо React за одну хвилину</a></li>\n<li><a href=\"#optional-try-react-with-jsx\">Необов’язково: Спробуйте React з JSX</a> (без необхідності в бандлерах!)</li>\n</ul>\n<h2 id=\"add-react-in-one-minute\"><a href=\"#add-react-in-one-minute\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Додаємо React за одну хвилину </h2>\n<p>У цьому розділі ми покажемо, як додати React-компонент до існуючої HTML сторінки. Ви можете практикуватися на своєму сайті або створити для даних цілей пустий HTML файл.</p>\n<p>Вам не потрібно встановлювати складні інструменти або що-небудь інше — <strong>для того, щоб пройти даний розділ, вам потрібен доступ в Інтернет і хвилинка вільного часу.</strong></p>\n<p>Необов’язково: <a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Завантажити готовий приклад (2Кб в архіві)</a></p>\n<h3 id=\"step-1-add-a-dom-container-to-the-html\"><a href=\"#step-1-add-a-dom-container-to-the-html\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Крок 1: Додайте DOM-контейнер до HTML структури </h3>\n<p>По-перше, відкрийте HTML сторінку, яку ви хочете відредагувати. Додайте пустий <code class=\"gatsby-code-text\">&lt;div&gt;</code> тег, щоб показати де ви хочете відобразити що-небудь з React. Для прикладу:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token comment\">&lt;!-- ... існуючий HTML-код ... --></span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>like_button_container<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span></span>\n<span class=\"token comment\">&lt;!-- ... існуючий HTML-код ... --></span></code></pre></div>\n<p>Ми дали цьому <code class=\"gatsby-code-text\">&lt;div&gt;</code>-у <code class=\"gatsby-code-text\">id</code> HTML-атрибут, який є унікальним. Це дозволить нам знайти його пізніше за допомогою JavaScript-коду та відобразити React-компонент всередині нього.</p>\n<blockquote>\n<p>Порада</p>\n<p>Ви можете вставити “контейнер” <code class=\"gatsby-code-text\">&lt;div&gt;</code> <strong>будь-де</strong> всередині тегу <code class=\"gatsby-code-text\">&lt;body&gt;</code>. Ви можете створювати стільки незалежних DOM-контейнерів на одній сторінці, скільки вам потрібно. Вони зазвичай пусті — React замінить будь-який існуючий вміст всередині DOM контейнерів.</p>\n</blockquote>\n<h3 id=\"step-2-add-the-script-tags\"><a href=\"#step-2-add-the-script-tags\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Крок 2: Додайте теги скриптів </h3>\n<p>Далі, додайте три теги <code class=\"gatsby-code-text\">&lt;script&gt;</code> до HTML-сторінки перед закриваючим тегом <code class=\"gatsby-code-text\">&lt;/body&gt;</code>:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\">  <span class=\"token comment\">&lt;!-- ... інший HTML-код ... --></span>\n\n  <span class=\"token comment\">&lt;!-- Завантажимо React. --></span>\n  <span class=\"token comment\">&lt;!-- Примітка: перед розгортанням на продакшн, замініть \"development.js\" на \"production.min.js\". --></span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@16/umd/react.development.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@16/umd/react-dom.development.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span>\n  <span class=\"token comment\">&lt;!-- Завантажимо наш React-компонент. --></span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>like_button.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Перші два теги завантажують React. Третій завантажує код вашого компонента.</p>\n<h3 id=\"step-3-create-a-react-component\"><a href=\"#step-3-create-a-react-component\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Крок 3: Створіть React-компонент </h3>\n<p>Створіть файл з назвою <code class=\"gatsby-code-text\">like_button.js</code> в директорії з вашою HTML-сторінкою.</p>\n<p>Відкрийте <strong><a href=\"https://gist.github.com/gaearon/0b180827c190fe4fd98b4c7f570ea4a8/raw/b9157ce933c79a4559d2aa9ff3372668cce48de7/LikeButton.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">цей початковий код</a></strong> і вставте його у файл, який ви створили раніше.</p>\n<blockquote>\n<p>Порада</p>\n<p>Цей код описує компонент React під назвою <code class=\"gatsby-code-text\">LikeButton</code>. Не хвилюйтесь, якщо ви не розумієте його — ми охопимо розробку React-компонентів пізніше в нашому <a href=\"/tutorial/tutorial.html\">практичному підручнику</a> і <a href=\"/docs/hello-world.html\">довідці про основні концепти React</a>. Зараз же давайте відобразимо його на екрані!</p>\n</blockquote>\n<p>Після <strong><a href=\"https://gist.github.com/gaearon/0b180827c190fe4fd98b4c7f570ea4a8/raw/b9157ce933c79a4559d2aa9ff3372668cce48de7/LikeButton.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">початкового коду</a></strong> додайте два рядки коду в кінці <code class=\"gatsby-code-text\">like_button.js</code>:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// ... початковий код, який ви скопіювали...</span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> domContainer <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span><span class=\"token string\">'#like_button_container'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">ReactDOM<span class=\"token punctuation\">.</span><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token function\">e</span><span class=\"token punctuation\">(</span>LikeButton<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> domContainer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span></code></pre></div>\n<p>Ці два рядки коду шукають <code class=\"gatsby-code-text\">&lt;div&gt;</code>, який ми додали до нашого HTML-файлу в першому кроці і потім відображає React-компонент кнопки “Мені подобається” всередині нього.</p>\n<h3 id=\"thats-it\"><a href=\"#thats-it\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Готово! </h3>\n<p>Ось і все! <strong>Ви щойно додали ваш перший React-компонент до вашого сайту.</strong></p>\n<p>Ознайомтесь з наступними розділами, щоб дізнатися про інші способи додавання React на ваш сайт.</p>\n<p><strong><a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Подивитися фінальний код прикладу</a></strong></p>\n<p><strong><a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Завантажити код прикладу (2Кб в архіві)</a></strong></p>\n<h3 id=\"tip-reuse-a-component\"><a href=\"#tip-reuse-a-component\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Порада: Повторно використовуйте компоненти </h3>\n<p>Зазвичай ви, мабуть, хотіли би відобразити React-компонент у кількох місцях на HTML-сторінці. Цей приклад показує кнопку “Мені подобається” три рази із різними даними:</p>\n<p><a href=\"https://gist.github.com/gaearon/faa67b76a6c47adbab04f739cba7ceda\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Подивитися повний першокод</a></p>\n<p><a href=\"https://gist.github.com/gaearon/faa67b76a6c47adbab04f739cba7ceda/archive/9d0dd0ee941fea05fd1357502e5aa348abb84c12.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Завантажити код прикладу (2Кб в архіві)</a></p>\n<blockquote>\n<p>Примітка</p>\n<p>Цей принцип найбільш доречний для сторінок сайту, які містять написані на React ізольовані частини коду. Всередині чистого React-коду простіше користуватися <a href=\"/docs/components-and-props.html#composing-components\">композицією компонентів</a>.</p>\n</blockquote>\n<h3 id=\"tip-minify-javascript-for-production\"><a href=\"#tip-minify-javascript-for-production\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Порада: Виконуйте стиснення JavaScript-коду перед розгортанням </h3>\n<p>Перед публікацією вашого сайту на продакшн не забудьте про те, що нестиснений JavaScript-код може значно сповільнити швидкість завантаження сторінки для ваших користувачів.</p>\n<p>Якщо ви вже стискаєте скрипти вашого додатку, <strong>то ваш сайт буде готовим для публікації на продакшн</strong>, якщо ви впевнитесь в тому, що опублікована HTML-сторінка завантажує версії React, які закінчуються на <code class=\"gatsby-code-text\">production.min.js</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@16/umd/react.production.min.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@16/umd/react-dom.production.min.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Якщо ви ще не налаштували стискання для ваших скриптів, то <a href=\"https://gist.github.com/gaearon/42a2ffa41b8319948f9be4076286e1f3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">цей варіант може вам допомогти із цим</a>.</p>\n<h2 id=\"optional-try-react-with-jsx\"><a href=\"#optional-try-react-with-jsx\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Необов’язково: Спробуйте React з JSX </h2>\n<p>В попередніх прикладах ми використовували тільки звичайні можливості сучасних браузерів. Тому ми використали JavaScript функцію, мета якої описати React, що відобразити на екран:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> e <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span>createElement<span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Відобразити &lt;button> з текстом \"Мені подобається\"</span>\n<span class=\"token keyword\">return</span> <span class=\"token function\">e</span><span class=\"token punctuation\">(</span>\n  <span class=\"token string\">'button'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">{</span> <span class=\"token function-variable function\">onClick</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">setState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> liked<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">'Мені подобається'</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Однак React також пропонує можливість використовувати спеціальний синтаксис під назвою <a href=\"/docs/introducing-jsx.html\">JSX</a>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Відобразити &lt;button> з текстом \"Мені подобається\"</span>\n<span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">onClick</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">setState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> liked<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    Мені подобається\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>button</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Ці два приклади виконують одну і ту ж річ. Незважаючи на те, що <strong>JSX є <a href=\"/docs/react-without-jsx.html\">цілком необов’язковим</a></strong>, багато людей вважають його зручним для розробки інтерфейсів користувача — як із React, так і з іншими бібліотеками.</p>\n<p>Ви можете спробувати JSX <a href=\"https://babeljs.io/en/repl#?babili=false&#x26;browsers=&#x26;build=&#x26;builtIns=false&#x26;spec=false&#x26;loose=false&#x26;code_lz=DwIwrgLhD2B2AEcDCAbAlgYwNYF4DeAFAJTw4B88EAFmgM4B0tAphAMoQCGETBe86WJgBMAXJQBOYJvAC-RGWQBQ8FfAAyaQYuAB6cFDhkgA&#x26;debug=false&#x26;forceAllTransforms=false&#x26;shippedProposals=false&#x26;circleciRepo=&#x26;evaluate=false&#x26;fileSize=false&#x26;timeTravel=false&#x26;sourceType=module&#x26;lineWrap=true&#x26;presets=es2015%2Creact%2Cstage-2&#x26;prettier=false&#x26;targets=&#x26;version=7.4.3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">у цьому онлайн-конвертері</a>.</p>\n<h3 id=\"quickly-try-jsx\"><a href=\"#quickly-try-jsx\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Швидкий старт з JSX </h3>\n<p>Найшвидший спосіб спробувати JSX в вашому проекті — це додати тег <code class=\"gatsby-code-text\">&lt;script&gt;</code> до вашої сторінки:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/babel-standalone@6/babel.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Тепер ви можете використовувати JSX в будь-якому <code class=\"gatsby-code-text\">&lt;script&gt;</code>-тегу за допомогою додавання атрибуту <code class=\"gatsby-code-text\">type=&quot;text/babel&quot;</code>. Ось <a href=\"https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">приклад HTML-файлу з JSX</a>, який ви можете завантажити і поекспериментувати з ним.</p>\n<p>Такий спосіб прекрасний для навчання і створення простих демо. Однак це робить ваш сайт повільним і <strong>непридатним для публікації в продакшн</strong>. Тому для розгортання React-компоненту з JSX краще зробити по-іншому. Коли ви готові до кроку вперед, видаліть тег <code class=\"gatsby-code-text\">&lt;script&gt;</code> і атрибут <code class=\"gatsby-code-text\">type=&quot;text/babel&quot;</code>, який ми додали раніше. Замість цього, в наступному розділі ви встановите JSX-препроцесор для того, щоб трансформувати код всередині тегів <code class=\"gatsby-code-text\">&lt;script&gt;</code> автоматично.</p>\n<h3 id=\"add-jsx-to-a-project\"><a href=\"#add-jsx-to-a-project\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Додаємо JSX в проект </h3>\n<p>JSX не потребує від проекту складних інструментів як бандлер або сервер для розробки. По суті, додавання JSX <strong>нагадує додавання CSS-препроцесора</strong>. Головною вимогою є наявність встановленого <a href=\"https://nodejs.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Node.js</a> на вашому комп’ютері.</p>\n<p>Перейдіть до директорії вашого проекту в терміналі і вставте наступні дві команди:</p>\n<ol>\n<li><strong>Крок 1:</strong> Запустіть <code class=\"gatsby-code-text\">npm init -y</code> (якщо результатом виконання цієї команди є будь-які помилки, спробуйте <a href=\"https://gist.github.com/gaearon/246f6380610e262f8a648e3e51cad40d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">дане рішення вашої проблеми</a>)</li>\n<li><strong>Крок 2:</strong> Запустіть <code class=\"gatsby-code-text\">npm install babel-cli@6 babel-preset-react-app@3</code></li>\n</ol>\n<blockquote>\n<p>Порада</p>\n<p>Ми <strong>використовуємо в даному прикладі менеджер пакунків npm лише для того, щоб встановити JSX препроцесор.</strong> React і код додатку може залишатися в тегах <code class=\"gatsby-code-text\">&lt;script&gt;</code> без змін.</p>\n</blockquote>\n<p>Вітаємо! Ви щойно додали у ваш проект <strong>підтримку JSX, яка готова до публікації в продакшн</strong>.</p>\n<h3 id=\"run-jsx-preprocessor\"><a href=\"#run-jsx-preprocessor\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Запускаємо препроцесор JSX </h3>\n<p>Створіть директорію під назвою <code class=\"gatsby-code-text\">src</code> і запустіть наступну команду в терміналі:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"gatsby-code-text\"><code class=\"gatsby-code-text\">npx babel --watch src --out-dir . --presets react-app/prod</code></pre></div>\n<blockquote>\n<p>Примітка</p>\n<p><code class=\"gatsby-code-text\">npx</code> не є помилкою — це <a href=\"https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">інструмент запуску пакетів, який з’явився в npm версії 5.2+</a>.</p>\n<p>Якщо ви отримали помилку, схожу на “You have mistakenly installed the <code class=\"gatsby-code-text\">babel</code> package”, це значить що вам необхідно перейти до <a href=\"#add-jsx-to-a-project\">попереднього кроку</a> і виконати команду ще раз.</p>\n</blockquote>\n<p>Не чекайте на завершення цієї команди — ця команда запускає автоматичне спостереження і реагування на будь-які зміни в коді JSX.</p>\n<p>Тепер спробуйте створити файл під назвою <code class=\"gatsby-code-text\">like_button.js</code> в директорії <code class=\"gatsby-code-text\">src/</code> з цим <strong><a href=\"https://gist.github.com/gaearon/c8e112dc74ac44aac4f673f2c39d19d1/raw/09b951c86c1bf1116af741fa4664511f2f179f0a/like_button.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">стартовим кодом JSX</a></strong>. Препроцесор автоматично трансформує новий код в JavaScript-код, який “розуміють” браузери. Коли ви внесете зміни до файлу з JSX, препроцесор перезапустить процесс трансформування автоматично.</p>\n<p>В якості бонуса, це також вам дасть використовувати сучасні синтаксичні новинки JavaScript, як класи, без хвилювань про несумісність з старими браузерами. Інструмент, який ми щойно додали, називається Babel, докладніше познайомитися з ним ви можете завдяки <a href=\"https://babeljs.io/docs/en/babel-cli/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">його документації</a>.</p>\n<p>Якщо вам стає більш комфортно з інструментами збірки і хочете аби вони робили більше для вас, <a href=\"/docs/create-a-new-react-app.html\">наступний розділ</a> описує деякі із найпопулярніших способів. Якщо ні — цих тегів <code class=\"gatsby-code-text\">script</code> цілком достатньо!</p>","frontmatter":{"title":"Додаємо React до сайту","next":"create-a-new-react-app.html","prev":"getting-started.html"},"fields":{"path":"content/docs/add-react-to-a-website.md","slug":"docs/add-react-to-a-website.html"}}},"pageContext":{"slug":"docs/add-react-to-a-website.html"}},"staticQueryHashes":[]}