100 запитань та відповідей по темі:

React — Шпаргалка

1. Що таке React?

Бібліотека для побудови UI-компонентів на JavaScript, орієнтована на декларативний рендеринг.

2. Що таке компонент у React?

Функція або клас, що повертає JSX для відображення частини UI.

3. Що таке JSX?

Синтаксис, що схожий на HTML, який React перетворює у виклики React.createElement().

4. Яка різниця між функціональним і класовим компонентом?

Функціональні компоненти — прості функції, класові — ES6 класи з методами життєвого циклу.

5. Що таке props?

Властивості, які передаються компоненту з батьківського компонента для налаштування або передачі даних.

6. Що таке state?

Локальний стан компоненту, який можна змінювати і який викликає повторний рендер при зміні.

7. Як створити state у функціональному компоненті?

За допомогою хука useState: const [count, setCount] = useState(0);

8. Що таке useEffect?

Хук для виконання побічних ефектів у функціональних компонентах (fetch, підписки, таймери).

9. Як передати дані від батька до дитини?

Через props: <Child name="Ivan" />

10. Як передати дані від дитини до батька?

За допомогою callback-функцій, переданих через props.

11. Що таке conditional rendering?

Відображення компонентів чи елементів на основі умов: {isLoggedIn ? <Logout/> : <Login/>}

12. Що таке list rendering?

Відображення масивів через метод .map() з унікальним ключем: {items.map(item => <li key={item.id}>{item.name}</li>)}

13. Що таке key у списках?

Унікальний ідентифікатор елемента списку для оптимізації рендеру React.

14. Що таке controlled component?

Форма, значення якої керується через state React, наприклад <input value={value} onChange={handleChange} />.

15. Що таке uncontrolled component?

Форма, яка керується DOM, а не state React; можна використовувати ref для доступу до значення.

16. Що таке React Fragment?

Компонент, що дозволяє групувати елементи без додаткового DOM-вузла: <Fragment>...</Fragment> або <>...</>

17. Що таке React Portal?

Механізм рендеру компоненту у DOM-вузол поза основним деревом: ReactDOM.createPortal(child, container)

18. Що таке React Router?

Бібліотека для маршрутизації в React-додатках.

19. Як створити маршрут у React Router?

Через компонент <Route path="/about" element=<About /> />

20. Що таке useRef?

Хук для доступу до DOM-вузла або збереження змінної без ререндеру: const inputRef = useRef();

21. Що таке useContext?

Хук, який дозволяє отримати дані з React.Context без пропс-дрилінгу.

22. Що таке context API?

Механізм глобального зберігання даних у React, альтернатива пропс-дрилінгу.

23. Що таке useReducer?

Хук для керування складним state через reducer-функцію (аналог Redux, але локально).

24. Коли варто використовувати useReducer замість useState?

Коли state складний або залежить від попереднього значення, або є багато різних дій над ним.

25. Що таке підйом state (lifting state up)?

Перенесення state з дочірнього компонента в батьківський для спільного використання.

26. Що таке HOC (Higher-Order Component)?

Функція, яка приймає компонент і повертає новий компонент з розширеною логікою.

27. Що таке render props?

Техніка, коли компонент приймає функцію як пропс для рендеру UI.

28. Що таке custom hook?

Функція з префіксом use, яка інкапсулює логіку з іншими хуками для повторного використання.

29. Які правила хуків?
  • Викликати хуки тільки на верхньому рівні компонента.
  • Не викликати в циклах, умовах чи вкладених функціях.
  • Викликати тільки з React-компонентів або custom hooks.
30. Що таке useMemo?

Хук, що кешує результат обчислень для оптимізації продуктивності.

31. Що таке useCallback?

Хук, що повертає мемоізовану функцію, щоб уникати її перевизначення при кожному рендері.

32. Чим useMemo відрізняється від useCallback?

useMemo кешує значення, useCallback — функцію.

33. Що таке React.memo?

Функція вищого порядку для мемоізації функціонального компонента, щоб уникнути зайвих ререндерів.

34. Що таке Virtual DOM?

Віртуальне представлення DOM у пам'яті, яке дозволяє React ефективно оновлювати UI через diffing-алгоритм.

35. Що таке reconciliation?

Процес порівняння старого і нового Virtual DOM та оновлення реального DOM лише там, де є зміни.

36. Що таке key у reconciliation?

Ключ допомагає React ідентифікувати елементи списку для оптимального оновлення DOM.

37. Чим відрізняється SPA від MPA?

SPA (Single Page Application) має один HTML, оновлює контент через JS; MPA (Multi Page Application) перезавантажує сторінку при кожному переході.

38. Як підключити CSS у React?

Через імпорт: import './App.css'; або CSS-модулі чи styled-components.

39. Що таке CSS Modules?

Технологія локальної ізоляції стилів у React: import styles from './App.module.css';

40. Що таке styled-components?

Бібліотека для CSS-in-JS, що дозволяє писати стилі прямо в JS як компоненти.

41. Що таке prop drilling?

Передача props через кілька проміжних компонентів, навіть якщо вони там не потрібні.

42. Як уникнути prop drilling?

Використати Context API, Redux або інший state manager.

43. Що таке Redux?

Бібліотека керування глобальним state за принципом Flux: один store, reducer-и та actions.

44. Що таке store у Redux?

Єдине сховище глобального стану застосунку.

45. Що таке reducer у Redux?

Функція, яка приймає поточний state та action і повертає новий state.

46. Що таке action у Redux?

Об’єкт з обов'язковим полем type, який описує, яку зміну треба зробити.

47. Що таке middleware у Redux?

Функції, що розширюють логіку Redux (наприклад, redux-thunk для асинхронності).

48. Що таке Redux Toolkit?

Офіційна бібліотека для спрощення роботи з Redux (менше коду, зручні createSlice, createAsyncThunk).

49. Що таке React Query?

Бібліотека для асинхронного керування даними (fetch, кешування, синхронізація).

50. Що таке useTransition?

Хук React 18 для позначення оновлень як "неголовних", щоб UI залишався чутливим.

51. Що таке useDeferredValue?

Хук, що відкладає оновлення значення для покращення продуктивності UI.

52. Що таке Suspense?

Компонент для відображення fallback-контенту під час завантаження асинхронних даних.

53. Що таке Error Boundary?

Компонент, який відловлює JavaScript-помилки в дочірніх компонентах і відображає запасний UI.

54. Як створити Error Boundary?

Тільки класовий компонент із методами componentDidCatch та getDerivedStateFromError.

55. Що таке hydration?

Процес відновлення подій і state на стороні клієнта після серверного рендеру.

56. Що таке SSR у React?

Server-Side Rendering — рендер React-компонентів на сервері перед відправкою HTML клієнту.

57. Що таке Next.js?

Фреймворк на базі React для SSR, SSG, маршрутизації, API routes та оптимізації продуктивності.

58. Що таке Gatsby?

Фреймворк для статичної генерації сайтів на React.

59. Що таке React Native?

Фреймворк на React для створення мобільних застосунків під iOS і Android.

60. Що таке Expo?

Інструмент для швидкої розробки на React Native з готовим набором бібліотек.

61. Що таке JSX transpilation?

Процес перетворення JSX у звичайний JavaScript через Babel.

62. Що таке Babel у React?

Транспайлер, що перетворює JSX і сучасний JS у сумісний із браузерами код.

63. Що таке Webpack у React?

Бандлер, який збирає JS, CSS, зображення у один пакет.

64. Що таке CRA (Create React App)?

Інструмент для швидкого створення React-проєктів із готовою конфігурацією.

65. Що таке Vite?

Сучасний швидкий бандлер і дев-сервер для React (альтернатива CRA).

66. Що таке hot reloading?

Автоматичне оновлення коду в браузері без перезавантаження сторінки.

67. Що таке lazy loading у React?

Динамічне завантаження компонентів через React.lazy() та Suspense.

68. Що таке code splitting?

Розбиття бандла на менші частини для швидшого завантаження.

69. Як оптимізувати продуктивність React?

Мемоізація, React.memo, useMemo, useCallback, code splitting, virtualization.

70. Що таке virtualization у React?

Рендер лише видимих елементів списку (react-window, react-virtualized).

71. Що таке server components?

Компоненти React 18, які виконуються на сервері, не потрапляючи у клієнтський бандл.

72. Що таке concurrent rendering?

Механізм React 18, що дозволяє робити рендер частинами, не блокуючи UI.

73. Що таке useId?

Хук React 18 для генерації стабільних унікальних ID для елементів.

74. Що таке forwardRef?

Функція, яка дозволяє передавати ref з батька до дочірнього компонента.

75. Що таке useImperativeHandle?

Хук, що дозволяє кастомізувати значення, яке доступне через ref у батьківському компоненті.

76. Що таке StrictMode у React?

Інструмент для виявлення потенційних проблем, подвійно викликає деякі методи у dev-режимі.

77. Як відстежити ререндери у React?

Використати React DevTools або useWhyDidYouUpdate hook.

78. Що таке useLayoutEffect?

Хук, схожий на useEffect, але виконується синхронно після DOM-оновлень.

79. Чим відрізняється useLayoutEffect від useEffect?

useEffect виконується асинхронно, useLayoutEffect — синхронно після рендеру.

80. Що таке useSyncExternalStore?

Хук React 18 для підписки на зовнішні сховища стану (Redux, Zustand).

81. Що таке Zustand?

Легка бібліотека для керування глобальним state у React.

82. Що таке Jotai?

Бібліотека state management у React на базі атомів.

83. Що таке Recoil?

Бібліотека state management для React від Facebook із концепцією атомів та селекторів.

84. Що таке MobX?

Бібліотека state management на основі observables.

85. Що таке Formik?

Бібліотека для зручної роботи з формами у React.

86. Що таке React Hook Form?

Легка бібліотека для форм у React із хуками.

87. Що таке controlled form libraries?

Бібліотеки, які керують формами через state (Formik, React Hook Form).

88. Що таке testing-library/react?

Бібліотека для тестування React-компонентів через симуляцію користувацьких дій.

89. Що таке Jest?

Фреймворк для тестування JavaScript і React.

90. Що таке snapshot testing?

Метод тестування, що зберігає рендер у файл та порівнює його з новими результатами.

91. Що таке enzyme?

Бібліотека для тестування React-компонентів (застаріла, замінюється RTL).

92. Що таке React DevTools?

Розширення браузера для дебагу компонентів React.

93. Що таке storybook?

Інструмент для документування та тестування UI-компонентів у ізоляції.

94. Що таке monorepo у React-проєктах?

Організація кількох пакетів у єдиному репозиторії (NX, Turborepo).

95. Що таке microfrontends у React?

Архітектура, де фронтенд ділиться на незалежні частини, які можна розробляти окремо.

96. Що таке React Fiber?

Нова архітектура внутрішнього ядра React (з версії 16) для кращого планування рендеру.

97. Що таке render phase і commit phase?

Render phase — підготовка змін у Virtual DOM. Commit phase — оновлення реального DOM.

98. Що таке double rendering у StrictMode?

Функціональні компоненти викликаються двічі у dev-режимі для виявлення побічних ефектів.

99. Що таке hydration errors?

Помилки, коли HTML із сервера не збігається з рендером на клієнті.

100. Що таке React Server Components (RSC)?

Можливість виконувати компоненти на сервері, передаючи результат клієнту без JS.