useState로 상태 정의const [isClickedPreference, setIsClickedPreference] = useState<boolean>(false);
"선호" 버튼을 클릭했는지 여부를 판단하기 위해, 다음과 같이 boolean 타입으로 상태를 정의하였다.
isClickedPreference 상태 업데이트setIsClickedPreference 상태 업데이트 함수를 이용하여 isClickedPreference 상태를 업데이트하는 방법은 크게 두 가지가 있다.
함수형 업데이트 방식
setIsClickedPreference((prev) => !prev);
현재 상태값을 직접 참조해서 업데이트하는 방식
setIsClickedPreference(!isClickedPreference);
isClickedPreference 값을 기반으로 새로운 상태를 정함useEffect 안에서 상태 변경이 여러 번 일어나는 경우에는 주의가 필요함함수형 업데이트 방식
// 이 버튼을 두 번 빠르게 클릭하면?
<button onClick={() => {
setIsClickedPreference((prev) => !prev);
setIsClickedPreference((prev) => !prev);
}}>
false → truetrue → false현재 상태값을 직접 참조해서 업데이트하는 방식
<button onClick={() => {
setIsClickedPreference(!isClickedPreference);
setIsClickedPreference(!isClickedPreference);
}}>
!isClickedPreference는 두 번 모두 같은 값으로 평가됨setState((prev) => ...) 방식이 더 안전함!isClickedPreference도 가능하지만, 예측 가능한 코드를 원한다면 함수형 업데이트를 추천함