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 (
);
}
// 예시 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 (
);
}
// 예시 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 (
);
}
// 전체 예시 조합
export function UsePreviousExamples() {
return (
usePrevious 훅 사용 예시
이전 값을 추적하는 다양한 방법을 보여주는 예시들입니다.
);
}
export default UsePreviousExamples;