{"componentChunkName":"component---src-templates-docs-js","path":"/docs/react-api.html","result":{"data":{"markdownRemark":{"html":"<p><code class=\"gatsby-code-text\">React</code> є точкою входу у бібліотеку React. Якщо ви завантажуєте React з тега <code class=\"gatsby-code-text\">&lt;script&gt;</code>, API верхнього рівня доступні в глобальному об’єкті <code class=\"gatsby-code-text\">React</code>. Якщо ви використовуєте ES6 разом із npm, ви можете написати <code class=\"gatsby-code-text\">import React from &#39;react&#39;</code>, якщо ES5 — <code class=\"gatsby-code-text\">var React = require(&#39;react&#39;)</code>.</p>\n<h2 id=\"overview\"><a href=\"#overview\" 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>Огляд </h2>\n<h3 id=\"components\"><a href=\"#components\" 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-компоненти дозволяють розділити інтерфейс користувача на незалежні частини, які можна використовувати повторно та працювати з кожною окремо. Компоненти у React можуть бути визначені за допомогою підкласу <code class=\"gatsby-code-text\">React.Component</code> або <code class=\"gatsby-code-text\">React.PureComponent</code>.</p>\n<ul>\n<li><a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a></li>\n<li><a href=\"#reactpurecomponent\"><code class=\"gatsby-code-text\">React.PureComponent</code></a></li>\n</ul>\n<p>Якщо ви не використовуєте ES6 класи, замість них ви можете використовувати модуль <code class=\"gatsby-code-text\">create-react-class</code>. Для додаткової інформації, читайте <a href=\"/docs/react-without-es6.html\">Використання React без ES6</a>.</p>\n<p>React-компоненти також можуть бути визначені як функції, що обгорнуті у:</p>\n<ul>\n<li><a href=\"#reactmemo\"><code class=\"gatsby-code-text\">React.memo</code></a></li>\n</ul>\n<h3 id=\"creating-react-elements\"><a href=\"#creating-react-elements\" 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-елементів </h3>\n<p>Ми рекомендуємо <a href=\"/docs/introducing-jsx.html\">використання JSX</a> для опису того, як повинен виглядати ваш інтерфейс користувача. Кожен JSX-елемент — це просто синтаксичний цукор для виклику <a href=\"#createelement\"><code class=\"gatsby-code-text\">React.createElement()</code></a>. Вам не доведеться використовувати наступні методи безпосередньо, якщо ви використовуєте JSX.</p>\n<ul>\n<li><a href=\"#createelement\"><code class=\"gatsby-code-text\">createElement()</code></a></li>\n<li><a href=\"#createfactory\"><code class=\"gatsby-code-text\">createFactory()</code></a></li>\n</ul>\n<p>Для додаткової інформації, дивіться <a href=\"/docs/react-without-jsx.html\">Використання React без JSX</a>.</p>\n<h3 id=\"transforming-elements\"><a href=\"#transforming-elements\" 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><code class=\"gatsby-code-text\">React</code> надає декілька API для маніпулювання елементами:</p>\n<ul>\n<li><a href=\"#cloneelement\"><code class=\"gatsby-code-text\">cloneElement()</code></a></li>\n<li><a href=\"#isvalidelement\"><code class=\"gatsby-code-text\">isValidElement()</code></a></li>\n<li><a href=\"#reactchildren\"><code class=\"gatsby-code-text\">React.Children</code></a></li>\n</ul>\n<h3 id=\"fragments\"><a href=\"#fragments\" 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><code class=\"gatsby-code-text\">React</code> також надає компонент для рендерингу множини елементів без обгортки.</p>\n<ul>\n<li><a href=\"#reactfragment\"><code class=\"gatsby-code-text\">React.Fragment</code></a></li>\n</ul>\n<h3 id=\"refs\"><a href=\"#refs\" 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<ul>\n<li><a href=\"#reactcreateref\"><code class=\"gatsby-code-text\">React.createRef</code></a></li>\n<li><a href=\"#reactforwardref\"><code class=\"gatsby-code-text\">React.forwardRef</code></a></li>\n</ul>\n<h3 id=\"suspense\"><a href=\"#suspense\" 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>Затримка дозволяє компонентам “почекати” чого-небудь перед рендерингом. На даний час існує тільки один спосіб використання затримки: <a href=\"/docs/code-splitting.html#reactlazy\">динамічне завантаження компонентів із <code class=\"gatsby-code-text\">React.lazy</code></a>. В майбутньому варіантів застосування затримки стане більше, наприклад, вибірка даних.</p>\n<ul>\n<li><a href=\"#reactlazy\"><code class=\"gatsby-code-text\">React.lazy</code></a></li>\n<li><a href=\"#reactsuspense\"><code class=\"gatsby-code-text\">React.Suspense</code></a></li>\n</ul>\n<h3 id=\"hooks\"><a href=\"#hooks\" 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><em>Хуки</em> є новим доповненням у React 16.8. Вони дозволяють вам використовувати стан та інші React особливості без написання класу. Хукам <a href=\"/docs/hooks-intro.html\">присвячено секцію в документації</a> та окремий API довідник:</p>\n<ul>\n<li>\n<p><a href=\"/docs/hooks-reference.html#basic-hooks\">Основні хуки</a></p>\n<ul>\n<li><a href=\"/docs/hooks-reference.html#usestate\"><code class=\"gatsby-code-text\">useState</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useeffect\"><code class=\"gatsby-code-text\">useEffect</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usecontext\"><code class=\"gatsby-code-text\">useContext</code></a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hooks-reference.html#additional-hooks\">Додаткові хуки</a></p>\n<ul>\n<li><a href=\"/docs/hooks-reference.html#usereducer\"><code class=\"gatsby-code-text\">useReducer</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usecallback\"><code class=\"gatsby-code-text\">useCallback</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usememo\"><code class=\"gatsby-code-text\">useMemo</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useref\"><code class=\"gatsby-code-text\">useRef</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useimperativehandle\"><code class=\"gatsby-code-text\">useImperativeHandle</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#uselayouteffect\"><code class=\"gatsby-code-text\">useLayoutEffect</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usedebugvalue\"><code class=\"gatsby-code-text\">useDebugValue</code></a></li>\n</ul>\n</li>\n</ul>\n<hr>\n<h2 id=\"reference\"><a href=\"#reference\" 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>Довідка </h2>\n<h3 id=\"reactcomponent\"><a href=\"#reactcomponent\" 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><code class=\"gatsby-code-text\">React.Component</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Component</code> є базовим класом для React-компонентів, коли вони визначені за допомогою <a href=\"https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Classes\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ES6 класів</a>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">Greeting</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Привіт, </span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Дивіться <a href=\"/docs/react-component.html\">довідник React.Component API</a> для пошуку методів та властивостей, що пов’язані із базовим класом <code class=\"gatsby-code-text\">React.Component</code>.</p>\n<hr>\n<h3 id=\"reactpurecomponent\"><a href=\"#reactpurecomponent\" 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><code class=\"gatsby-code-text\">React.PureComponent</code> </h3>\n<p><code class=\"gatsby-code-text\">React.PureComponent</code> подібний до <a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a>. Різниця між ними тільки в тому, що <a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a> не реалізує <a href=\"/docs/react-component.html#shouldcomponentupdate\"><code class=\"gatsby-code-text\">shouldComponentUpdate()</code></a>, а <code class=\"gatsby-code-text\">React.PureComponent</code> реалізує його через поверхове порівняння пропсів та стану.</p>\n<p>Якщо метод <code class=\"gatsby-code-text\">render()</code> компонента React відображає той самий результат з тими самими пропсами та станом, ви можете використовувати <code class=\"gatsby-code-text\">React.PureComponent</code> для підвищення продуктивності у деяких випадках.</p>\n<blockquote>\n<p>Примітка</p>\n<p>Метод <code class=\"gatsby-code-text\">shouldComponentUpdate()</code> класу <code class=\"gatsby-code-text\">React.PureComponent</code> тільки поверхово порівнює об’єкти. Якщо вони містять складні структури даних, це може призвести до помилкових спрацьовувань під час більш глибокого порівняння. Розширюйте <code class=\"gatsby-code-text\">PureComponent</code> тільки тоді, коли ви очікуєте на прості пропси та стан, або використовуйте <a href=\"/docs/react-component.html#forceupdate\"><code class=\"gatsby-code-text\">forceUpdate()</code></a>, коли ви знаєте, що структури даних змінилися. Або розгляньте можливісь застосування <a href=\"https://facebook.github.io/immutable-js/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">незмінних об’єктів</a> для спрощення швидкого порівняння вкладених даних.</p>\n<p>Крім того, метод <code class=\"gatsby-code-text\">shouldComponentUpdate()</code> класу <code class=\"gatsby-code-text\">React.PureComponent</code> пропускає оновлення пропсів для всього піддерева компоненту. Впевніться, що всі дочірні компоненти також “чисті”.</p>\n</blockquote>\n<hr>\n<h3 id=\"reactmemo\"><a href=\"#reactmemo\" 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><code class=\"gatsby-code-text\">React.memo</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> MyComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">memo</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* рендер з використанням пропсів */</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><code class=\"gatsby-code-text\">React.memo</code> є <a href=\"/docs/higher-order-components.html\">компонентом вищого порядку</a>.</p>\n<p>Якщо ваш компонент відображає той самий результат з тими самими пропсами та станом, ви можете обгорнути його у виклик <code class=\"gatsby-code-text\">React.memo</code> для підвищення продуктивності в деяких випадках шляхом запам’ятовування результату. Це означає, що React пропустить рендеринг компоненту та повторно використає останній результат рендерингу.</p>\n<p><code class=\"gatsby-code-text\">React.memo</code> тільки перевіряє чи змінилися пропси. Якщо ваша функція, згорнута у <code class=\"gatsby-code-text\">React.memo</code>, має <a href=\"/docs/hooks-state.html\"><code class=\"gatsby-code-text\">useState</code></a> або <a href=\"/docs/hooks-reference.html#usecontext\"><code class=\"gatsby-code-text\">useContext</code></a> хуки в своїй імплементації, вона все ще буду ререндеритися при зміні стана або контекста.</p>\n<p>За замовчуванням він тільки поверхово порівнює складні об’єкти, що знаходяться в об’єкті пропсів. Якщо ви хочете контролювати процес порівняння, ви також можете надати користувальницьку функцію для порівняння помістивши її другим аргументом.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* рендер з використанням пропсів */</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">areEqual</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">prevProps<span class=\"token punctuation\">,</span> nextProps</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/*\n  повертає true, якщо передавання nextProps для рендерингу\n  поверне той самий результат, що і передавання prevProps,\n  інакше повертає false\n  */</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">memo</span><span class=\"token punctuation\">(</span>MyComponent<span class=\"token punctuation\">,</span> areEqual<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Цей метод існує тільки для <strong><a href=\"/docs/optimizing-performance.html\">оптимізації продуктивності</a>.</strong> Не покладайтеся на нього, щоб “запобігти” рендерингу, бо це може призвести до помилок.</p>\n<blockquote>\n<p>Примітка</p>\n<p>На відміну від методу <a href=\"/docs/react-component.html#shouldcomponentupdate\"><code class=\"gatsby-code-text\">shouldComponentUpdate()</code></a> для компонентів-класів, функція <code class=\"gatsby-code-text\">areEqual</code> повертає <code class=\"gatsby-code-text\">true</code>, якщо пропси рівні і <code class=\"gatsby-code-text\">false</code>, якщо пропси не рівні. Це інверсія <code class=\"gatsby-code-text\">shouldComponentUpdate</code>.</p>\n</blockquote>\n<hr>\n<h3 id=\"createelement\"><a href=\"#createelement\" 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><code class=\"gatsby-code-text\">createElement()</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">createElement</span><span class=\"token punctuation\">(</span>\n  type<span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span>props<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span><span class=\"token operator\">...</span>children<span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Створює та повертає новий <a href=\"/docs/rendering-elements.html\">React-елемент</a> вказаного типу. Аргумент типу може бути або рядком тегу (наприклад, <code class=\"gatsby-code-text\">&#39;div&#39;</code> або <code class=\"gatsby-code-text\">&#39;span&#39;</code>), або типом <a href=\"/docs/components-and-props.html\">компоненту React</a> (клас чи функція), або <a href=\"#reactfragment\">фрагментом React</a>.</p>\n<p>Код написаний за допомогою <a href=\"/docs/introducing-jsx.html\">JSX</a> буде конвертований у виклики <code class=\"gatsby-code-text\">React.createElement()</code>. Зазвичай ви не викликаєте <code class=\"gatsby-code-text\">React.createElement()</code> безпосередньо, коли використовуєте JSX. Для того, щоб дізнатися більше, читайте <a href=\"/docs/react-without-jsx.html\">React без JSX</a>.</p>\n<hr>\n<h3 id=\"cloneelement\"><a href=\"#cloneelement\" 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><code class=\"gatsby-code-text\">cloneElement()</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"gatsby-code-text\"><code class=\"gatsby-code-text\">React.cloneElement(\n  element,\n  [props],\n  [...children]\n)</code></pre></div>\n<p>Клонує та повертає новий елемент React, використовуючи <code class=\"gatsby-code-text\">element</code> як зразок. Отриманий елемент буде містити пропси оригінального елемента з новими властивостями, об’єднаними поверхово. Нові потомки замінять існуючих. <code class=\"gatsby-code-text\">key</code> і <code class=\"gatsby-code-text\">ref</code> з оригінального елемента будуть збережені.</p>\n<p><code class=\"gatsby-code-text\">React.cloneElement()</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>element.type</span> <span class=\"token spread\"><span class=\"token punctuation\">{</span><span class=\"token punctuation\">...</span><span class=\"token attr-value\">element</span><span class=\"token punctuation\">.</span><span class=\"token attr-value\">props</span><span class=\"token punctuation\">}</span></span> <span class=\"token spread\"><span class=\"token punctuation\">{</span><span class=\"token punctuation\">...</span><span class=\"token attr-value\">props</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>children<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>element.type</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Проте, він також зберігає посилання. Це означає, що якщо ви отримаєте потомка з атрибутом <code class=\"gatsby-code-text\">ref</code>, ви не зможете випадково вкрасти його у свого предка. Ви отримаєте той самий <code class=\"gatsby-code-text\">ref</code>, доданий до вашого нового елемента.</p>\n<p>Цей API був впроваджений як заміна застарілого <code class=\"gatsby-code-text\">React.addons.cloneWithProps()</code>.</p>\n<hr>\n<h3 id=\"createfactory\"><a href=\"#createfactory\" 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><code class=\"gatsby-code-text\">createFactory()</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">createFactory</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Повертає функцію, яка створює React-елементи вказаного типу. Подібно до <a href=\"#createelement\"><code class=\"gatsby-code-text\">React.createElement()</code></a>, аргумент типу може бути або рядком тегу (наприклад, <code class=\"gatsby-code-text\">&#39;div&#39;</code> або <code class=\"gatsby-code-text\">&#39;span&#39;</code>), або типом <a href=\"/docs/components-and-props.html\">компоненту React</a> (клас чи функція), або <a href=\"#reactfragment\">фрагментом React</a>.</p>\n<p>Цей помічник вважається застарілим, тому ми рекомендуємо використовувати або JSX, або безпосередньо <code class=\"gatsby-code-text\">React.createElement()</code>.</p>\n<p>Зазвичай ви не викликаєте <code class=\"gatsby-code-text\">React.createFactory()</code> безпосередньо, коли використовуєте JSX. Для того, щоб дізнатися більше, дивіться <a href=\"/docs/react-without-jsx.html\">React без JSX</a>.</p>\n<hr>\n<h3 id=\"isvalidelement\"><a href=\"#isvalidelement\" 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><code class=\"gatsby-code-text\">isValidElement()</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">isValidElement</span><span class=\"token punctuation\">(</span>object<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Перевіряє чи об’єкт є елементом React. Повертає <code class=\"gatsby-code-text\">true</code> або <code class=\"gatsby-code-text\">false</code>.</p>\n<hr>\n<h3 id=\"reactchildren\"><a href=\"#reactchildren\" 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><code class=\"gatsby-code-text\">React.Children</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Children</code> надає утиліти для роботи з непрозорою структурою даних <code class=\"gatsby-code-text\">this.props.children</code>.</p>\n<h4 id=\"reactchildrenmap\"><a href=\"#reactchildrenmap\" 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><code class=\"gatsby-code-text\">React.Children.map</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>thisArg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Викликає функцію для кожного дочірнього елемента, що міститься в <code class=\"gatsby-code-text\">children</code> із <code class=\"gatsby-code-text\">this</code> встановленим у <code class=\"gatsby-code-text\">thisArg</code>. Якщо <code class=\"gatsby-code-text\">children</code> є масивом, він буде пройдений та функція виконається для кожного його елемента. Якщо <code class=\"gatsby-code-text\">children</code> дорівнює <code class=\"gatsby-code-text\">null</code> або <code class=\"gatsby-code-text\">undefined</code>, функція поверне <code class=\"gatsby-code-text\">null</code> або <code class=\"gatsby-code-text\">undefined</code>, а не масив.</p>\n<blockquote>\n<p>Примітка</p>\n<p>Якщо <code class=\"gatsby-code-text\">children</code> — це компонент <code class=\"gatsby-code-text\">Fragment</code>, він буде розглядатися як один потомок і не буде пройдений.</p>\n</blockquote>\n<h4 id=\"reactchildrenforeach\"><a href=\"#reactchildrenforeach\" 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><code class=\"gatsby-code-text\">React.Children.forEach</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>thisArg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Подібний до <a href=\"#reactchildrenmap\"><code class=\"gatsby-code-text\">React.Children.map()</code></a>, але не повертає масив.</p>\n<h4 id=\"reactchildrencount\"><a href=\"#reactchildrencount\" 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><code class=\"gatsby-code-text\">React.Children.count</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Повертає загальну кількість компонентів у <code class=\"gatsby-code-text\">children</code>, що дорівнює кількості викликів функції зворотнього виклику, яка передана у <code class=\"gatsby-code-text\">map</code> чи <code class=\"gatsby-code-text\">forEach</code>.</p>\n<h4 id=\"reactchildrenonly\"><a href=\"#reactchildrenonly\" 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><code class=\"gatsby-code-text\">React.Children.only</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">only</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Перевіряє чи <code class=\"gatsby-code-text\">children</code> має тільки один дочірній елемент (React-елемент) і повертає його. В іншому випадку цей метод спричиняє помилку.</p>\n<blockquote>\n<p>Примітка:</p>\n<p><code class=\"gatsby-code-text\">React.Children.only()</code> не приймає значення, яке повертає метод <a href=\"#reactchildrenmap\"><code class=\"gatsby-code-text\">React.Children.map()</code></a>, бо воно є масивом, а не елементом React.</p>\n</blockquote>\n<h4 id=\"reactchildrentoarray\"><a href=\"#reactchildrentoarray\" 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><code class=\"gatsby-code-text\">React.Children.toArray</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">toArray</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Повертає непрозору структуру даних <code class=\"gatsby-code-text\">children</code> як плоский масив з ключами, призначеними для кожного потомка. Це корисно, якщо ви хочете маніпулювати колекціями потомків у ваших рендер-методах, особливо якщо ви хочете змінити порядок або обрізати <code class=\"gatsby-code-text\">this.props.children</code>, перш ніж передавати його далі.</p>\n<blockquote>\n<p>Примітка:</p>\n<p><code class=\"gatsby-code-text\">React.Children.toArray()</code> змінює ключі для збереження семантики вкладених масивів під час вирівнювання списку потомків. Тобто, <code class=\"gatsby-code-text\">toArray</code> додає префікс до кожного ключа у повернутому масиві, тому ключ кожного елемента охоплює вхідний масив, що його містить.</p>\n</blockquote>\n<hr>\n<h3 id=\"reactfragment\"><a href=\"#reactfragment\" 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><code class=\"gatsby-code-text\">React.Fragment</code> </h3>\n<p>Компонент <code class=\"gatsby-code-text\">React.Fragment</code> доволяє вам повертати множину елементів у методі <code class=\"gatsby-code-text\">render()</code> без створення додаткового DOM елемента:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</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><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      Some text.\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h2</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">A heading</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h2</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Крім того, ви можете використовувати скорочений синтаксис <code class=\"gatsby-code-text\">&lt;&gt;&lt;/&gt;</code>. Для отримання додаткової інформації, дивіться <a href=\"/blog/2017/11/28/react-v16.2.0-fragment-support.html\">React v16.2.0: Покращена підтримка для фрагментів</a>.</p>\n<h3 id=\"reactcreateref\"><a href=\"#reactcreateref\" 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><code class=\"gatsby-code-text\">React.createRef</code> </h3>\n<p><code class=\"gatsby-code-text\">React.createRef</code> створює <a href=\"/docs/refs-and-the-dom.html\">посилання</a>, яке може бути додане до елемента React через ref атрибут.\n<div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"token keyword\">class</span> <span class=\"token class-name\">MyComponent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">super</span><span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">}</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">.</span>current<span class=\"token punctuation\">.</span><span class=\"token function\">focus</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n        </div></p>\n<h3 id=\"reactforwardref\"><a href=\"#reactforwardref\" 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><code class=\"gatsby-code-text\">React.forwardRef</code> </h3>\n<p><code class=\"gatsby-code-text\">React.forwardRef</code> створює React-компонент, що передає атрибут <a href=\"/docs/refs-and-the-dom.html\">ref</a>, який він отримав, іншому компоненту, розташованому нижче у дереві. Цей прийом не дуже поширений, але він особливо корисний у двох випадках:</p>\n<ul>\n<li><a href=\"/docs/forwarding-refs.html#forwarding-refs-to-dom-components\">Передавання посилань DOM компонентам</a></li>\n<li><a href=\"/docs/forwarding-refs.html#forwarding-refs-in-higher-order-components\">Передавання посилань у компоненти вищого порядку</a></li>\n</ul>\n<p><code class=\"gatsby-code-text\">React.forwardRef</code> приймає рендер-функцію як аргумент. React викличе цю функцію з двома аргументами <code class=\"gatsby-code-text\">props</code> і <code class=\"gatsby-code-text\">ref</code>. Ця функція повинна повертати вузол React.</p>\n<p><div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> FancyButton <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">forwardRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props<span class=\"token punctuation\">,</span> ref</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span> <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>FancyButton<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"token plain-text\">    </span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>children<span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">  </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><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// You can now get a ref directly to the DOM button:</span>\n<span class=\"token keyword\">const</span> ref <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">FancyButton</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Click me!</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">FancyButton</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span></code></pre>\n        </div></p>\n<p>У прикладі вище, React передає посилання <code class=\"gatsby-code-text\">ref</code>, передане елементу <code class=\"gatsby-code-text\">&lt;FancyButton ref={ref}&gt;</code>, у рендер-функцію всередині виклику <code class=\"gatsby-code-text\">React.forwardRef</code> в якості другого аргументу. Потім ця функція передає посилання <code class=\"gatsby-code-text\">ref</code> у елемент <code class=\"gatsby-code-text\">&lt;button ref={ref}&gt;</code>.</p>\n<p>В результаті, коли React додасть посилання, <code class=\"gatsby-code-text\">ref.current</code> буде посилатися беспосередньо на DOM елемент <code class=\"gatsby-code-text\">&lt;button&gt;</code>.</p>\n<p>Для отримання додаткової інформації, дивіться розділ про <a href=\"/docs/forwarding-refs.html\">передавання посилань</a>.</p>\n<h3 id=\"reactlazy\"><a href=\"#reactlazy\" 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><code class=\"gatsby-code-text\">React.lazy</code> </h3>\n<p><code class=\"gatsby-code-text\">React.lazy()</code> дає вам змогу визначити компонент, що динамічно завантажується. Це допомагає зменшити розмір бандлу шляхом затримки рендерингу компонентів, які не використовуються під час початкового рендерингу.</p>\n<p>Більш детальіше ви можете дізнатися у розділі документації про <a href=\"/docs/code-splitting.html#reactlazy\">розділення коду</a>, а також прочитавши <a href=\"https://medium.com/@pomber/lazy-loading-and-preloading-components-in-react-16-6-804de091c82d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">дану статтю</a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Цей компонент завантажується динамічно</span>\n<span class=\"token keyword\">const</span> SomeComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">lazy</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\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./SomeComponent'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Зверніть увагу, що рендеринг <code class=\"gatsby-code-text\">lazy</code> компонентів потребує наявності компонента <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code>, розташованого вище у дереві рендерингу. Таким чином ви можете вказати індикатор завантаження.</p>\n<blockquote>\n<p><strong>Примітка</strong></p>\n<p>Використання <code class=\"gatsby-code-text\">React.lazy</code> з динамічним імпортом вимагає підтримки промісів від вашого JS оточення. Для IE11 та нижче, потрібно використовувати polyfill.</p>\n</blockquote>\n<h3 id=\"reactsuspense\"><a href=\"#reactsuspense\" 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><code class=\"gatsby-code-text\">React.Suspense</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Suspense</code> дозволяє вам вказати індикатор завантаження у випадку, якщо деякі компоненти у дереві нижче ще не готові до рендерингу. Сьогодні, ледаче завантаження компонентів — це <strong>єдиний</strong> варіант використання, що підтримується <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Цей компонент завантажується динамічно</span>\n<span class=\"token keyword\">const</span> OtherComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">lazy</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\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./OtherComponent'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token comment\">// Відображає &lt;Spinner> поки OtherComponent завантажується</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">React.Suspense</span></span> <span class=\"token attr-name\">fallback</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Spinner</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">OtherComponent</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">React.Suspense</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Це задокументовано у розділі про <a href=\"/docs/code-splitting.html#reactlazy\">розділення коду</a>. Зауважте, що <code class=\"gatsby-code-text\">lazy</code> компоненти можуть бути розташовані глибоко всередині дерева <code class=\"gatsby-code-text\">Suspense</code> — йому не обов’язково обгортати кожнен з них. Найкраще розміщувати <code class=\"gatsby-code-text\">&lt;Suspense&gt;</code> там, де ви хочете бачити індикатор завантаження, але <code class=\"gatsby-code-text\">lazy()</code> використовувати всюди, де ви хочете розділити код.</p>\n<p>Хоча це і не підтримується на даний час, в майбутньому ми плануємо дати можливість <code class=\"gatsby-code-text\">Suspense</code> обробляти більше сценаріїв, наприклад, вибірку даних. Ви можете прочитати про це у <a href=\"/blog/2018/11/27/react-16-roadmap.html\">нашому плані дій</a>.</p>\n<blockquote>\n<p>Примітка:</p>\n<p><code class=\"gatsby-code-text\">ReactDOMServer</code> не підтримує <code class=\"gatsby-code-text\">React.lazy()</code> та <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code>. Це відоме обмеження буде вирішено в майбутньому.</p>\n</blockquote>","frontmatter":{"title":"React API верхнього рівня","next":null,"prev":null},"fields":{"path":"content/docs/reference-react.md","slug":"docs/react-api.html"}}},"pageContext":{"slug":"docs/react-api.html"}},"staticQueryHashes":[]}