Що таке React простими словами: компоненти, JSX, props і хуки

React (його ще називають React.js або ReactJS) — безкоштовна JavaScript-бібліотека з відкритим кодом для створення інтерфейсів: сторінок сайтів, вебзастосунків, а разом із React Native — і мобільних застосунків. Інтерфейс у React збирають з окремих блоків-компонентів, а бібліотека сама оновлює екран, коли змінюються дані.

Станом на жовтень 2026 року актуальна гілка — React 19.3: вона вийшла 9 вересня 2026 року, а 14 жовтня з’явилося виправлення 19.3.1. Бібліотеку створили у Facebook (нині Meta); перший публічний коміт датовано 29 травня 2013 року, а код поширюється за ліцензією MIT. З 24 лютого 2026 року React, React Native і JSX належать уже не Meta, а незалежній React Foundation під егідою Linux Foundation.

React простими словами: навіщо він потрібен

Перша ідея React — компоненти. Найпростіше уявити його як конструктор: кнопка, картка товару, поле пошуку, шапка сайту — окремі деталі. Кожну описують один раз, а потім збирають із них сторінки, як із цеглинок.

Друга ідея — декларативність. На чистому JavaScript розробник сам шукає елемент на сторінці й змінює його після кожної дії користувача, а коли таких дій десятки, код заплутується. У React достатньо описати, що має бути на екрані за поточних даних, а узгодити з цим сторінку бібліотека бере на себе.

React відповідає саме за інтерфейс, тому його називають бібліотекою, а не фреймворком. Маршрутизацію, завантаження даних чи серверний рендеринг беруть з інших інструментів або з фреймворку на основі React. Новий проєкт офіційна документація радить починати саме з фреймворку: Next.js, React Router або Expo для мобільних застосунків. Новини веброзробки — у рубриці «Веб».

Що таке компонент у React

Компонент — окремий фрагмент інтерфейсу, що поєднує власну розмітку, логіку й оформлення. Технічно це звичайна функція JavaScript, що повертає розмітку. Розмір довільний: від однієї кнопки до цілої сторінки.

function Greeting({ name }) {
  return <h1>Привіт, {name}!</h1>;
}

Далі компонент використовують як тег: <Greeting name="Олено" />. Назва компонента обов’язково починається з великої літери — так React відрізняє власні компоненти від HTML-тегів, які пишуть з малої. Одні компоненти вкладають в інші: картка товару містить зображення, заголовок і кнопку. Так утворюється дерево батьківських і дочірніх компонентів.

Дві поради з документації: не оголошуйте компонент усередині іншого, бо це, за словами посібника, сповільнює застосунок і породжує помилки, і пишіть компоненти як функції. Класові React досі підтримує, вони трапляються в старому коді, але команда рекомендує функції.

Що таке JSX у React

JSX — спосіб записувати розмітку прямо в JavaScript-коді. Зовні він нагадує HTML, але є розширенням синтаксису JavaScript. Браузер JSX напряму не виконує: під час збирання проєкту інструменти на кшталт Vite перетворюють його на звичайний JavaScript. Формально JSX і React незалежні: їх можна використовувати й окремо.

JSX суворіший за HTML. Основні правила з документації:

  • компонент повертає один кореневий елемент; якщо зайва обгортка не потрібна, елементи групують фрагментом <>…</>;
  • усі теги закривають, зокрема одиночні: <img />, <br />;
  • більшість атрибутів пишуть у camelCase, а замість class — className;
  • у фігурні дужки {} вставляють будь-який вираз JavaScript: змінну, обчислення, виклик функції.

Що таке props у React

Props (пропси, скорочення від properties — «властивості») — дані, які батьківський компонент передає дочірньому. Записують їх так само, як атрибути HTML, проте значенням може бути що завгодно з JavaScript: рядок, число, об’єкт, масив чи функція.

<Avatar name="Олена" size={80} />

Компонент отримує props як єдиний аргумент-об’єкт і зазвичай одразу розбирає його на змінні: function Avatar({ name, size = 100 }). Тут 100 — резервне значення на випадок, якщо size не передали.

Головне правило: props призначені тільки для читання. Якщо дані мають змінитися, батьківський компонент передає нові props, а власні змінні дані компонент зберігає у state. Окремий випадок — prop children: у нього потрапляє все, що вкладено між тегами компонента, наприклад <Card>…</Card>; на цьому будують обгортки на зразок панелей.

Props і state: у чому різниця

  • Props надходять ззовні, від батьківського компонента, приблизно як аргументи у функцію, і визначають, яким буде дочірній компонент.
  • State (стан) — «пам’ять» самого компонента: що введено в поле, яке фото показує галерея, що лежить у кошику. Компонент змінює стан сам, і після кожної зміни React рендерить його заново.

Стан належить конкретному екземпляру: два однакові лічильники на сторінці рахують кліки незалежно. Часто батьківський компонент тримає дані у своєму стані й передає їх дітям як props. Якщо двом компонентам потрібні спільні дані, стан переносять у їхній найближчий спільний батьківський компонент — у документації це називають lifting state up, «підняття стану».

Що таке хуки в React

Хуки (англ. hooks, «гачки») — функції з префіксом use у назві, через які компонент підключається до можливостей React: стану, ефектів, контексту. Хуки стали стабільними в React 16.8 у лютому 2019 року, і відтоді для стану та ефектів не потрібні класи.

useState: пам’ять компонента

useState повертає пару: поточне значення і функцію для його зміни. Класичний приклад — лічильник кліків:

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <button onClick={() => setCount(count + 1)}>
      Кліків: {count}
    </button>
  );
}

Нуль тут — початкове значення. Чому не обійтися звичайною змінною let count = 0? Під час кожного рендеру React викликає функцію компонента заново, і локальна змінна щоразу починається з нуля, а її зміна ще й не підказує React, що екран треба оновити. Функція setCount розв’язує обидві проблеми.

useEffect: зв’язок із зовнішнім світом

useEffect потрібен, коли компонент має узгоджувати свою роботу з чимось поза React: таймером, подіями браузера, з’єднанням із сервером, стороннім віджетом. Код ефекту виконується після того, як React оновив екран. Другий аргумент — масив залежностей: ефект перезапускається, лише коли змінилося одне з його значень. Порожній масив означає «виконати, коли компонент з’явився на екрані», а без масиву ефект спрацьовує після кожного оновлення.

const [seconds, setSeconds] = useState(0);

useEffect(() => {
  const id = setInterval(() => setSeconds(s => s + 1), 1000);
  return () => clearInterval(id);
}, []);

Функція, яку повертає ефект, — функція очищення (cleanup). React викликає її перед кожним повторним запуском ефекту і востаннє, коли компонент зникає з екрана. У режимі розробки зі Strict Mode React навмисно монтує компонент удруге, щоб виявити ефекти без очищення, тож повідомлення в консолі може з’явитися двічі. А якщо ефект лише обчислює один стан з іншого, він, за словами документації, найімовірніше, зайвий.

Правила хуків

  • Хуки викликають лише на верхньому рівні компонента або власного хука — не в умовах, циклах, вкладених функціях, обробниках подій і не після умовного return.
  • Хуки викликають лише з компонентів React або інших хуків, а не зі звичайних функцій JavaScript.

React розрізняє хуки за порядком виклику, тому під час кожного рендеру він має бути однаковим. Більшість порушень правил хуків ловить лінтер eslint-plugin-react-hooks. Повторювану логіку виносять у власний хук — функцію з назвою на use, усередині якої викликають інші хуки.

Віртуальний DOM: як React оновлює сторінку

DOM — це модель сторінки в браузері, дерево всіх її елементів. В архівній документації React віртуальний DOM описано як підхід, за якого «ідеальне» представлення інтерфейсу тримають у пам’яті й синхронізують зі справжнім DOM. Цей процес називають reconciliation, тобто узгодженням.

Нова документація пояснює те саме через три кроки:

  1. Тригер — привід для рендеру: перший показ компонента або зміна стану.
  2. Рендер — React викликає компоненти й з’ясовує, що має бути на екрані.
  3. Коміт — React вносить у DOM лише мінімально потрібні зміни, а якщо результат не змінився, сторінку не чіпає.

Частину оптимізацій раніше робили вручну через useMemo, useCallback і React.memo. З жовтня 2025 року є стабільний React Compiler 1.0: під час збирання він автоматично мемоізує компоненти й хуки, тобто кешує результати обчислень. Компілятор працює і з React, і з React Native.

React і React Native: у чому різниця

У браузері React через пакет react-dom перетворює компоненти на елементи сторінки. React Native переносить той самий підхід на Android та iOS: це відкритий фреймворк, де так само працюють компоненти, JSX, props, state і хуки. Тільки замість <div> і <p> там базові компоненти View, Text та Image, які в застосунку стають нативними елементами інтерфейсу платформи.

Meta випустила React Native у 2015 році, а тепер він, як і React, належить React Foundation. Для нового мобільного проєкту офіційний сайт радить фреймворк Expo. Новини мобільної розробки — у рубриці «Мобайл».

Наскільки React популярний

У Stack Overflow Developer Survey 2026 React назвали 41,5% із 10 281 учасника, що відповіли на запитання, з якими вебфреймворками та вебтехнологіями вони активно працювали протягом року. Вище лише Node.js (46,4%), у Vue.js — 17,2%, в Angular — 16%. Зарплати українських розробників на JavaScript, TypeScript та інших мовах — в огляді за даними DOU.

З чого почати вивчати React

  1. База. HTML, CSS і сучасний JavaScript: функції, деструктуризація, методи масивів map і filter, модулі import/export. Без цього розібратися з React буде важко.
  2. Офіційний посібник. Сторінка Quick Start на react.dev/learn, за словами авторів, охоплює близько 80% понять, потрібних щодня. Далі — туторіал із грою в хрестики-нулики, розрахований на тих, хто ще не знає React.
  3. Українська версія. Переклад документації від спільноти — на uk.react.dev; він входить до списку перекладів документації, які підтримує спільнота.
  4. Перший проєкт. Створіть його у фреймворку або за допомогою інструмента збирання Vite. Create React App брати не варто: React-команда оголосила його застарілим 14 лютого 2025 року.
  5. Дані з сервера. Далі варто навчитися отримувати дані через API — що це таке, ми пояснили в матеріалі про API простими словами.

Часті питання

React — це бібліотека чи фреймворк?

Офіційно React — бібліотека: він відповідає за інтерфейс, а маршрутизацію, завантаження даних і серверний рендеринг дають фреймворки на його основі, як-от Next.js чи React Router. Бібліотека безкоштовна й поширюється за ліцензією MIT.

Чим props відрізняються від state?

Props компонент отримує від батьківського компонента і змінювати їх не може. State — це його власні дані, які він змінює сам, наприклад через useState, і після кожної зміни React оновлює екран.

Що таке React Native?

Це фреймворк для мобільних застосунків Android та iOS, побудований на React. Компоненти пишуть на JavaScript, а на екрані вони стають нативними елементами платформи.

Чи потрібно знати JavaScript перед React?

Так: компоненти React — це функції JavaScript, тож спершу варто освоїти функції, масиви, об’єкти й модулі, а вже потім JSX і хуки.

Яка остання версія React?

Станом на жовтень 2026 року — React 19.3.1, яка вийшла 14 жовтня 2026 року. Мінорний реліз 19.3 з’явився 9 вересня 2026 року.