const ModalProgress = () => {
const isModal = useModalIsOpen();
const timer = useModalTimer();
const [count, setCount] = useState(timer * 10);
//NOTE - 타이머 기능
useCountDown(() => setCount((prevCount) => prevCount - 1), 100, isModal);
// 0같거나 작을 경우 -> 모달창 종료
useEffect(() => {
if (count <= 0 && isModal) {
setIsOpen(false);
}
}, [count]);
return(
<progress className={S.progress} value={(timer * 10 - count) * (100 / (timer * 10))} max={90}></progress>
)
}
코드 해석:
progressbar value
값 100이 UI에 표시되었으며, 타이머가 "-1"일 경우에 모달창이 종료 value 값인 90을 Max 값
으로 설정 progressBar의 value 식이 아닌 max 값을 변경한 이유
- countDown을 통해 숫자가 작아질 수록 value은 높아지는
반비례식
으로 형성value값의 count에 +1
를 하여 1초일 경우에 max 값이 100되도록 설정할 수 있지만 추후 유지보수 좋지 않다고 판단하였다.- 코드를 해석하는 측면에서 수학식을 해석하기보다는
"왜 max 값을 이렇게 설정했지?"
라는 측면으로 바라봤을 때 좀 더 쉽게 해석할 수 있다고 판단했기 때문이다.