Коротка відповідь
middleТак, можна вбудувати один React‑застосунок у інший. Це реалізується через підключення компонентів або використання micro‑frontend архітектури, де окремі частини працюють у власному контексті й спілкуються через пропси, Context або event‑bus.
Повне пояснення
Вбудовування React‑застосунків – це підключення одного набору компонентів до іншого. Найпоширеніші способи:
-
Компонентна інтеграція – просто імпортувати компонент з одного пакету й розмістити його у дереві іншого застосунку. Це працює, коли обидва застосунки мають спільний build‑процес і доступ до одних й тих самих залежностей.
-
Micro‑frontend – окремі частини (наприклад, сторінки або мікросервісні UI‑компоненти) збираються в окремі bundle’и, які підключаються до головного застосунку через iframe, Web‑components або SystemJS. Це дозволяє розподілити команду, незалежно збирати та деплоїти частини.
-
Підключення через CDN – підвантажити скрипт з іншого домену, який експортує React‑компонент як глобальний об’єкт. Потім його можна використовувати у власному застосунку.
У всіх випадках важливо забезпечити сумісність версій React, уникати дублювання бібліотек у bundle’ах і правильно керувати станом (наприклад, через Redux‑store або Context), щоб уникнути колізій.
Переваги: швидка розробка, повторне використання коду, можливість розподілу відповідальності між командами.
Недоліки: збільшення розміру bundle, складність налаштування build‑процесу, потенційні конфлікти стилів і стану.
Практичний приклад (компонентна інтеграція):
// у пакеті shared-components
export const Button = () => <button>Click me</button>;
// у головному застосунку
import { Button } from 'shared-components';
const App = () => <div><Button /></div>;
Micro‑frontend (iframe):
<iframe src="https://micro-app.example.com" title="Micro App"></iframe>
Тестування: для micro‑frontend використовують end‑to‑end тести (Playwright, Cypress), а для звичайної інтеграції – unit‑тести з React Testing Library.
Таким чином, вбудовування React‑застосунків можливе і широко використовується у великих проєктах.