import { useState } from 'react'; import usePrevious from './usePrevious'; /** * usePrevious 훅의 다양한 사용 예시를 보여주는 컴포넌트 */ // 예시 1: 단일 값 추적 - 카운터 export function CounterExample() { const [count, setCount] = useState(0); const prevCountRef = usePrevious(count); return (

예시 1: 단일 값 추적 (카운터)

현재값: {count}

이전값: {prevCountRef.current !== undefined ? prevCountRef.current : '초기값'}

); } // 예시 2: 다중 값 추적 (객체) - 사용자 정보 export function UserFormExample() { const [name, setName] = useState(''); const [age, setAge] = useState(''); const [email, setEmail] = useState(''); const prevRef = usePrevious({ name, age, email }); const prev = prevRef.current; const hasNameChanged = prev?.name !== name; const hasAgeChanged = prev?.age !== age; const hasEmailChanged = prev?.email !== email; return (

예시 2: 다중 값 추적 (객체) - 사용자 정보

이전 값

이름: {prev?.name || '(없음)'}

나이: {prev?.age || '(없음)'}

이메일: {prev?.email || '(없음)'}

); } // 예시 3: 배열 값 추적 - 다중 숫자 export function ArrayValuesExample() { const [a, setA] = useState(0); const [b, setB] = useState(0); const [c, setC] = useState(0); const prevRef = usePrevious([a, b, c]); const [prevA, prevB, prevC] = prevRef.current || []; return (

예시 3: 배열 값 추적 - 다중 숫자

이전: {prevA !== undefined ? prevA : '초기값'}
이전: {prevB !== undefined ? prevB : '초기값'}
이전: {prevC !== undefined ? prevC : '초기값'}
); } // 예시 4: 변동 감지 - 데이터 수정 여부 추적 export function ChangeDetectionExample() { const [data, setData] = useState({ title: 'React Hook Guide', description: 'usePrevious 훅 사용법', views: 1000, }); const prevDataRef = usePrevious(data); const prevData = prevDataRef.current; const changes = { titleChanged: prevData?.title !== data.title, descriptionChanged: prevData?.description !== data.description, viewsChanged: prevData?.views !== data.views, }; const hasAnyChanges = Object.values(changes).some((v) => v); const handleUpdate = (field, value) => { setData((prev) => ({ ...prev, [field]: value })); }; return (

예시 4: 변동 감지 - 데이터 수정 여부 추적

상태: {hasAnyChanges ? '데이터가 변경되었습니다' : '모든 데이터가 저장되었습니다'}

); } // 전체 예시 조합 export function UsePreviousExamples() { return (

usePrevious 훅 사용 예시

이전 값을 추적하는 다양한 방법을 보여주는 예시들입니다.

); } export default UsePreviousExamples;