Коротка відповідь
juniorReact — це декларативна UI‑бібліотека, що дозволяє швидко створювати повторно використовувані компоненти. Вона забезпечує ефективний рендеринг через virtual DOM, що мінімізує кількість реальних оновлень у браузері. Компонентна архітектура спрощує підтримку та тестування коду.
Повне пояснення
Що це і навіщо React — бібліотека JavaScript для побудови інтерфейсів користувача. Вона дозволяє розбити UI на незалежні, повторно використовувані компоненти, що полегшує розробку великих застосунків.
Ключові принципи
- Декларативність: описуєте, що має бути на екрані, а не як це досягти.
- Компонентність: кожен компонент має власний стан і життєвий цикл.
- Virtual DOM: React створює віртуальну копію реального DOM, обчислюючи мінімальний набір змін.
Як це працює
- Компонент повертає JSX (розширення синтаксису JavaScript).
- React порівнює новий virtual DOM з попереднім (diffing) і генерує мінімальний список оновлень.
- Оновлення застосовуються до реального DOM, що зменшує витрати на перерисування.
Практика і реалізація
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(c => c + 1)}>Clicked {count}</button>;
}
Тестування
- Unit: Jest + React Testing Library.
import { render, screen } from '@testing-library/react';
render(<Counter />);
screen.getByRole('button').click();
expect(screen.getByText(/Clicked 1/)).toBeInTheDocument();
- Integration: Cypress або Playwright для end‑to‑end.
Безпека та приватність
- Використовуйте
dangerouslySetInnerHTMLлише при необхідності, перевіряючи вхідні дані. - Захищайте API‑ключі через серверний проксі.
Оптимізація
React.memoдля запобігання зайвим рендерингам.useCallbackіuseMemoдля стабільних функцій/значень.
Особливості в контексті React
- Hooks:
useState,useEffect,useContextзамінюють класові методи. - Context API: простий спосіб передавати дані без проп‑дрилінгу.
- Redux / Zustand: для глобального стану, коли потрібна складніша логіка.
Часті помилки
- Необхідність ключів у списках →
keyпроп. - Відсутність типізації в TS → використовуйте
React.FCабо інтерфейси. - Перевантаження стану → розділіть логіку на підкомпоненти.
- Неправильне використання
useEffect→ перевірте залежності. - Застосування
setStateу циклі → використовуйте колбек‑версію. - Відсутність
React.StrictMode→ допомагає виявляти побічні ефекти. - Перевантаження пропсів → використовуйте
React.memo. - Необхідність оновлення DOM вручну → залишайте це React‑у.
Cheatsheet
useState→ локальний стан.useEffect→ побічні ефекти.useContext→ глобальний стан без Redux.React.memo→ мемоізація компоненту.keyу списках → унікальний ідентифікатор.
Follow‑up питання
- Як працює
useEffectі коли він виконується? - Що таке virtual DOM і чому це важливо?
- Які переваги має
React.memo?