Момент JS пропуская месяц в реакции с избыточным - PullRequest
0 голосов
/ 30 августа 2018

Я создаю своего рода веб-страницу календаря и использую реагирование с Redux в качестве управления состоянием. Для работы с датами и временем я использую MomentJs. Я хочу пролистать разные месяцы года, что было реализовано довольно хорошо. Я сейчас заметил проблему. Когда я пытаюсь поехать в март в любой год, он пропускается, а апрель показывает. Другое дело, что я могу вернуться только к февралю любого года. Все остальные месяцы работают нормально, что действительно странно. Я использовал документацию моментов, чтобы выяснить, что не так, но, похоже, не могу понять это. Итак, мой компонент, где действие называется:

Компонент

...
handleChangeCalendarStateClick = type => {
            switch (this.props.calendarType) {
                case "month":
                    if (type === "next") {
                        //this.props.changeCalendarStateTest("next");   
                        let month = this.props.calendarState.add(1, "M").format("YYYY/MM/DD");            
                        this.props.changeCalendarState(month);
                    } else {
                        let month = this.props.calendarState.subtract(1, "M").format("YYYY/MM/DD"); 
                        this.props.changeCalendarState(month);
                        //this.props.changeCalendarStateTest("prev");
                    }
                    break;
                case "week":
                    if (type === "next") {
                        console.log(this.props.calendarState);
                        this.props.changeCalendarState(this.props.calendarState.add(1, "w"));
                    } else {
                        this.props.changeCalendarState(this.props.calendarState.subtract(1, "w"));
                    }
                    break;
                case "day":
                    if (type === "next") {
                        this.props.changeCalendarState(this.props.calendarState.add(1, "d"));
                    } else {
                        this.props.changeCalendarState(this.props.calendarState.subtract(1, "d"));
                    }
                    break;
                default:
                    break;

            }
        }
 ...

Действие

...
export const changeCalendarStateAction = state => { 
    return {
        type: changeCalendarState, payload: { "state": state }
    }
}
...

Редуктор

const initialState = {
...
calendarState: moment(),
...
}
...
case changeCalendarState: {
        return {
            ...state,
            calendarState: moment(action.payload.state)
        }
    }
...

Теперь наступает действительно странная часть, это действие / редуктор работает для Week и Day представлений. (Как в гугл календаре). В этих представлениях навигация к марту и прошлому февралю работает как надо. Это только в представлении Month это не так.

...