Devs Hive
Повернутися до всіх запитань

Яка різниця між useEffect i useLayoutEffect?

React.jsJunior/Middle/Senior
Зустрічали на інтервʼю:1 користувач

Це доволі типове питання на інтервʼю, якщо в стеку проєкта використовується React. Варто почати з того, що обидва хуки - useEffect і useLayoutEffect використовуються для роботи з side effects, а найголовніша різниця між ними - момент виконання.

useEffect

Він спрацьовує після того, як React відрендерив компонент і браузер вже відмалював зміни на екрані, саме тому цей хук не блокує відмальовку UI. З точки зору lifecycle, useEffect схожий на сomponentDidMount, який теж спрацьовує тільки після того, як компонент вмонтований в DOM і повністю доступний.

Типові кейси застосування:
  1. Запити до API, на отримання даних;
  2. Підписки (event listeners, WebSocket);

useLayoutEffect

Він спрацьовує після того, як React оновив DOM, але до того, як браузер відмалює сторінку. Через це він блокує відмальовку UI, поки код всередині хука не виконається. Цей хук використовують тоді, коли потрібно синхронно працювати з DOM. Простими словами: useLayoutEffect потрібен, коли треба щось поправити в DOM так, щоб користувач цього не побачив.

Типові кейси застосування:
  1. Вимірювання ширини або висоти елементів;
  2. Зміна scroll-позиції;
  3. Синхронна зміна стилів;
  4. Уникнення миготіння або стрибків інтерфейсу (найчастіший кейс);


Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!