У меня есть следующие состояния:
let [currentMonth, setCurrentMonth] = useState(new Date().getMonth());
const [checkIn_month, setCheckInMonth] = useState(null);
У меня click event listener
назначено напрямую на JSX's
элемент tbody
. Используя event delegation
, нажмите на td elements
.
И в следующей функции, если я нажму на день, который находится в в предыдущем месяце , мне нужно уменьшить значение currentMonth state
и после этого для установки нового значения currentMonth
в состоянии setCheckInMonth
.
Проблема :
Когда я использую состояние setCheckInMonth(currentMonth)
, перехватите его дает старое значение, а не новое.
let [currentMonth, setCurrentMonth] = useState(new Date().getMonth());
const [checkIn_month, setCheckInMonth] = useState(null);
const selectDate = e => {
if (e.target.tagName === 'TD') {
if (e.target.classList.contains('previous-month-day')) {
setCurrentMonth(currentMonth => currentMonth - 1);
setCheckInMonth(currentMonth);
}
}
}
Что если я сделаю что-то вроде этого:
setCurrentMonth(currentMonth => currentMonth - 1);
setCheckInMonth(currentMonth - 1);
Это правильный способ сделать это?