Специализация
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 и перед его отображением, что позволяет производить измерения или манипуляции с элементами. Это может быть полезно, когда необходимо сразу же реагировать на изменения и избежать мерцания интерфейса.
Для чего нужны сайд-эффекты (LaunchedEffect, DisposableEffect)? Приведите примеры.
Сайд-эффекты — это действия вне Composable-функции (например, запросы в сеть).
LaunchedEffect: для корутин (анимации, API-запросы).
DisposableEffect: для ресурсов с очисткой (подписки, слушатели).
Если в useEffect сделать долгий fetch (например, на минуту), заблокирует ли это выполнение JS и интерфейс браузера? Почему он не ждёт ответа?
Нет, долгий fetch не заблокирует интерфейс, потому что он выполняется асинхронно. JavaScript не "ждёт" ответа — запрос отправляется в фоне, а основной поток продолжает работать.
Как useEffect заменяет методы жизненного цикла? Что происходит при пустом массиве зависимостей?
useEffect объединяет логику componentDidMount, componentDidUpdate и componentWillUnmount. Пустой массив зависимостей ([]) означает, что эффект запустится только при монтировании и очистится при размонтировании.
Как работает массив зависимостей в useEffect?
Что произойдёт, если не передать массив зависимостей в useEffect?
Почему useLayoutEffect может блокировать рендер?
В каких случаях стоит использовать useLayoutEffect?
Зачем нужен useEffect?
Рейтинг:
5
Сложность:
7
Массив зависимостей определяет, при каких изменениях эффект будет выполнен повторно. React сравнивает значения зависимостей между рендерами. Если хотя бы одно значение изменилось, эффект перезапускается. Сравнение происходит по ссылке. Правильное указание зависимостей критично для корректной работы приложения.
Рейтинг:
5
Сложность:
5
Если не передать массив зависимостей, эффект будет выполняться после каждого рендера. Это включает как первый рендер, так и все последующие обновления. Такое поведение часто приводит к лишним операциям. В некоторых случаях это может вызвать бесконечный цикл. Использовать эффект без зависимостей нужно очень осторожно.
Рейтинг:
4
Сложность:
7
useLayoutEffect выполняется синхронно после изменения DOM, но до того, как браузер выполнит отрисовку. Пока код внутри эффекта не завершится, браузер не может показать обновлённый интерфейс. Если эффект содержит тяжёлые вычисления, рендер визуально «зависает». Именно поэтому неправильное использование useLayoutEffect может ухудшать производительность. Этот хук требует особой осторожности.
Рейтинг:
4
Сложность:
6
useLayoutEffect стоит использовать, когда нужно синхронно прочитать или изменить DOM до отрисовки. Это актуально для измерения размеров элементов и предотвращения визуальных скачков. Также он применяется для интеграции с библиотеками, напрямую работающими с DOM. В большинстве случаев достаточно useEffect. useLayoutEffect — инструмент для точечных задач.
Рейтинг:
5
Сложность:
4
useEffect нужен для выполнения побочных эффектов в функциональных компонентах. Он используется для работы с внешними системами: API, таймерами, подписками, DOM. useEffect выполняется после рендера компонента. С помощью массива зависимостей можно контролировать, когда эффект должен запускаться.
Рейтинг:
4
Сложность:
5
Рейтинг:
4
Сложность:
6
Рейтинг:
2
Сложность:
4
Рейтинг:
3
Сложность:
9
Рейтинг:
3
Сложность:
8