> Как отобразить одновременно предыдущее и текущее значение пропса в React компоненте? (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Сбер
Стек: React
> Пример ответа
Для отображения предыдущего значения пропса в React-компоненте можно использовать хук useRef в сочетании с useEffect. Вот пример:
JSXimport React, { useRef, useEffect } from 'react';function MyComponent({ value }) {const prevValueRef = useRef();useEffect(() => {prevValueRef.current = value;}, [value]);const prevValue = prevValueRef.current;return (<div><p>Текущее значение: {value}</p><p>Предыдущее значение: {prevValue !== undefined ? prevValue : 'нет предыдущего'}</p></div>);}
Как это работает:
useRefсоздает объект, который сохраняет значение между рендерами без вызова перерендера.useEffectс зависимостью[value]обновляетprevValueRef.currentпосле каждого рендера, когдаvalueменяется.- В момент рендера
prevValueRef.currentсодержит предыдущее значение, так какuseEffectвыполняется после рендера.
Альтернативный вариант с кастомным хуком для переиспользования:
JSXfunction usePrevious(value) {const ref = useRef();useEffect(() => {ref.current = value;}, [value]);return ref.current;}// Использование:function MyComponent({ value }) {const prevValue = usePrevious(value);// ...}
Этот подход гарантирует, что предыдущее значение будет доступно сразу после первого рендера (как undefined), а затем будет корректно обновляться.
> Похожие задачи по frontend
Что такое strict mode в React и зачем он нужен
Что такое пропсы в React компонентах
Что такое forwardRef в React и для чего он используется?
Почему React-компонент может вызываться два раза подряд?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью