我正在构建一种日历网页,并且使用与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)
}
}
...
现在出现了非常奇怪的部分,该操作/归约器适用于Week
和Day
视图。 (就像在Google日历中一样)。在这些视图中,导航到3月和2月之前的工作是应该的。它仅在Month
视图中没有。