#javascript #reactjs #momentjs
#javascript #reactjs #momentjs
Вопрос:
У меня есть пользовательский компонент календаря, использующий «момент», но у меня возникли проблемы с изменением года.
Когда я выбираю дату в 2021 году, я получаю это в своем журнале консоли:
selectedDate:
Moment {_isAMomentObject: true, _isUTC: false, _pf: {…}, _locale: Locale, _d: Wed Jan 01 2020 10:19:00 GMT 0000 (Greenwich Mean Time), …}
_d: Wed Jan 01 2020 10:19:00 GMT 0000 (Greenwich Mean Time) {}
const today = moment().startOf("day");
getDates = month => {
return Array.from(Array(35)).map((_, i) => {
return month
.clone()
.startOf("month")
.startOf("isoWeek")
.add(i, "days");
});
};
nextMonth = () => {
const month = this.state.month.clone().add(1, "month");
console.log("check month: -=-=-=-=-=-", month);
this.setState({
month,
dates: this.getDates(month)
});
};
prevMonth = () => {
const month = this.state.month.clone().subtract(1, "month");s
this.setState({
month,
dates: this.getDates(month)
});
};
render() {
console.log("calendar state, -------", this.state);
console.log("calendar props, =======", this.props);
return (
---
{dates.map((date, i) => {
const selected = !!this.props.selectedDates.find(selectedDate => {
return (
console.log("selectedDate: ", selectedDate),
moment(selectedDate)
.startOf("day")
.isSame(date)
);
});
return (
<Day
key={i}
isDisabled={disabled}
isGreyed={diffMonth}
isSelected={selected}
onClick={() => {
if (isShiftHeld) {
return this.props.onEndDateClick(date);
}
this.props.onDateClick(date);
}}
>
<DayContent>{date.format("DD")}</DayContent>
</Day>
----
export default Calendar;
Похоже, это связано с getDates
функцией. Он устанавливает дни, недели, месяцы для «текущего» года.
Как я могу адаптировать это, чтобы понять, что после 31 декабря год увеличился?
Любая помощь или рекомендации будут оценены.
Комментарии:
1. Пожалуйста, сократите свой код до минимума, необходимого для демонстрации проблемы. Не публикуйте изображения, публикуйте текст. На изображении консоли отображается дата, переходящая с 2020-12-31 на 2021-01-01, так в чем проблема? Функция getDates кажется очень неэффективной.
2. все в порядке, пока я не выберу дату в 2021 году. Затем я получаю ответ, если я утешаю. зарегистрируйте это неверно. См. Обновление выше.