Moment JS在与redux的反应中跳过了一个月

时间:2018-08-30 11:21:30

标签: reactjs redux momentjs

我正在构建一种日历网页,并且使用与Redux进行交互作为状态管理。为了处理日期和时间,我使用了MomentJs。我想回顾一下一年中不同的月份,这些月份已经很好地实施了。我现在发现了一个问题。当我尝试去任何一年的3月时,都会跳过它,而显示4月。另一件事是我只能回到任何一年的2月。所有其他月份都工作正常,这确实很奇怪。我已经使用了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)
        }
    }
...

现在出现了非常奇怪的部分,该操作/归约器适用于WeekDay视图。 (就像在Google日历中一样)。在这些视图中,导航到3月和2月之前的工作是应该的。它仅在Month视图中没有。

0 个答案:

没有答案