Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Как правильно использовать useEffect для различных ситуаций?
Хук useEffect используется для выполнения побочных эффектов в функциональных компонентах, таких как запросы к API, подписки или манипуляции с DOM. Он принимает два аргумента: функцию обратного вызова и массив зависимостей. Массив определяет, когда эффект должен быть запущен, например, при первом рендеринге или при изменении определенных переменных. Для очистки эффектов можно вернуть функцию из хука.
Какие особенности имеют хуки useEffect и useLayoutEffect?
useEffect выполняется асинхронно после рендеринга, что позволяет обновлять DOM без блокировки отображения. useLayoutEffect, напротив, выполняется синхронно сразу после изменения DOM и перед его отображением, что позволяет производить измерения или манипуляции с элементами. Это может быть полезно, когда необходимо сразу же реагировать на изменения и избежать мерцания интерфейса.
Если в useEffect сделать долгий fetch (например, на минуту), заблокирует ли это выполнение JS и интерфейс браузера? Почему он не ждёт ответа?
Нет, долгий fetch не заблокирует интерфейс, потому что он выполняется асинхронно. JavaScript не "ждёт" ответа — запрос отправляется в фоне, а основной поток продолжает работать.
Как useEffect заменяет методы жизненного цикла? Что происходит при пустом массиве зависимостей?
useEffect объединяет логику componentDidMount, componentDidUpdate и componentWillUnmount. Пустой массив зависимостей ([]) означает, что эффект запустится только при монтировании и очистится при размонтировании.
Как работает массив зависимостей в useEffect?
Массив зависимостей определяет, при каких изменениях эффект будет выполнен повторно. React сравнивает значения зависимостей между рендерами. Если хотя бы одно значение изменилось, эффект перезапускается. Сравнение происходит по ссылке. Правильное указание зависимостей критично для корректной работы приложения.
Что произойдёт, если не передать массив зависимостей в useEffect?
Почему useLayoutEffect может блокировать рендер?
Зачем нужен useEffect?
Когда useEffect вызывается один раз?
В каком порядке выполняются render, useLayoutEffect и useEffect?
Рейтинг:
5
Сложность:
5
Если не передать массив зависимостей, эффект будет выполняться после каждого рендера. Это включает как первый рендер, так и все последующие обновления. Такое поведение часто приводит к лишним операциям. В некоторых случаях это может вызвать бесконечный цикл. Использовать эффект без зависимостей нужно очень осторожно.
Рейтинг:
4
Сложность:
7
useLayoutEffect выполняется синхронно после изменения DOM, но до того, как браузер выполнит отрисовку. Пока код внутри эффекта не завершится, браузер не может показать обновлённый интерфейс. Если эффект содержит тяжёлые вычисления, рендер визуально «зависает». Именно поэтому неправильное использование useLayoutEffect может ухудшать производительность. Этот хук требует особой осторожности.
Рейтинг:
5
Сложность:
4
useEffect нужен для выполнения побочных эффектов в функциональных компонентах. Он используется для работы с внешними системами: API, таймерами, подписками, DOM. useEffect выполняется после рендера компонента. С помощью массива зависимостей можно контролировать, когда эффект должен запускаться.
Рейтинг:
5
Сложность:
4
useEffect вызывается один раз, если ему передан пустой массив зависимостей []. В этом случае эффект выполняется после первого рендера компонента. Это поведение эквивалентно componentDidMount в классовых компонентах. Однако в StrictMode в режиме разработки эффект может вызываться дважды.
Рейтинг:
5
Сложность:
7
Сначала React выполняет render, затем на этапе коммита вызывается useLayoutEffect, и только после отрисовки браузером вызывается useEffect. useLayoutEffect выполняется синхронно и блокирует отрисовку, а useEffect — асинхронно, после paint. Поэтому useLayoutEffect используют для работы с layout, а useEffect — для побочных эффектов, не влияющих на разметку.
Рейтинг:
4
Сложность:
5
Рейтинг:
4
Сложность:
6
Рейтинг:
3
Сложность:
9
Рейтинг:
3
Сложность:
8
Рейтинг:
5
Сложность:
7