MapAppoinment.js에서 SelectedDate값 밀리는 버그 해결.
문제의 원인은 useState와 useEffect의 비동기적인 특성 때문. useState로 설정된 값을 바로 가져오는 것이 아니라, useState가 실행된 후 useEffect가 실행되기 전까지 시간적 차이가 발생할 수 있다. 따라서, mapRequestDto를 직접 사용하는 것이 아니라, selectAppointmentHandler 함수 내에서 값을 가공하여 사용하면 해결된다. 예를 들어, selectAppointmentHandler 함수 내에서 아래와 같이 appointment 값을 이용하여 mapRequestDto를 가공한다.
버그났던 코드:
const selectAppointmentHandler = () => {
setAppointment(moment(value).format('YYYY-MM-DD'));
mutate(mapRequestDto);
};
해결코드:
const selectAppointmentHandler = () => {
const formattedDate = moment(value).format('YYYY-MM-DD');
setAppointment(formattedDate);
const updatedMapRequestDto = {
...mapRequestDto,
selectedDate: formattedDate,
};
mutate(updatedMapRequestDto);
};