> Как реализовать кастомный хук для отслеживания первого рендера в React? (React, JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Альфа-банк
Стек: React, JavaScript
> Пример ответа
Для отслеживания первого рендера в React можно создать кастомный хук useIsFirstRender. Он возвращает true только при первом рендере компонента, а затем false при последующих.
Вот простая реализация на JavaScript:
JAVASCRIPTimport { useRef, useEffect } from 'react';function useIsFirstRender() {const isFirst = useRef(true);useEffect(() => {isFirst.current = false;}, []);return isFirst.current;}
Как это работает:
-
useRefсоздает изменяемый объект, который сохраняет значение между рендерами (без перерисовки). -
Изначально
isFirst.currentравенtrue. -
useEffectс пустым массивом зависимостей выполняется один раз после первого рендера, устанавливаяisFirst.current = false. -
Хук возвращает значение
isFirst.currentдо выполнения эффекта, поэтому при первом рендере этоtrue, а при последующих -false.
Пример использования:
JAVASCRIPTfunction MyComponent() {const isFirstRender = useIsFirstRender();useEffect(() => {if (isFirstRender) {console.log('Первый рендер - выполняем начальную инициализацию');} else {console.log('Повторный рендер - обновляем данные');}}, [isFirstRender]);return <div>Компонент</div>;}
Этот хук полезен для выполнения действий, которые должны происходить только при первом рендере (например, логирование, анимации появления) или для разграничения логики между первым и последующими рендерами.
> Похожие задачи по frontend
Как реализовать добавление и удаление кнопок с уникальными id в React при кликах
Как заставить useSWR отрабатывать только на клиенте, пропуская сервер
В чем разница Redux и React Context
Является ли рендеринг в React блокирующей операцией для исполнения JavaScript кода
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью