Reactjs 在Redux还原过程中,我的时间在变化
我有一个从组件调用的分派函数(在event_actions.js中):Reactjs 在Redux还原过程中,我的时间在变化,reactjs,redux,react-redux,momentjs,Reactjs,Redux,React Redux,Momentjs,我有一个从组件调用的分派函数(在event_actions.js中): export function moveEvent( event, start) { let startEv = event.start // moment obj let endEv = event.end // moment obj let diff = endEv.diff(startEv) console.log("time diff", diff) // time d
export function moveEvent( event, start)
{
let startEv = event.start // moment obj
let endEv = event.end // moment obj
let diff = endEv.diff(startEv)
console.log("time diff", diff) // time diff 7200000
let newstart = moment(start, "YYYYMMDDHHmm")
console.log("newstart", newstart) // newstart 2017-06-14T06:00:00-04:00
console.log("newend", newstart.add(diff, 'milliseconds').format()) // newend 2017-06-14T08:00:00-04:00
let payload = {
start: newstart,
end: newstart.add(diff, 'milliseconds'),
id: event.id,
}
return { type: 'MOVE_EVENT', payload: payload }
}
下面是我在EVENT_.js中的“MOVE_EVENT”案例:
case 'MOVE_EVENT': {
console.log("eventstart",action.payload.start.format()) // eventstart 2017-06-14T10:00:00-04:00
console.log("eventend",action.payload.end.format()) // eventend 2017-06-14T10:00:00-04:00
console.log(state.events) // prints all events including the one I'm moving which already has the bad values for start and end
let eventIndex = state.events.findIndex(event => event.id === action.payload.id)
let newEvent = state.events[eventIndex]
newEvent.start = action.payload.start
newEvent.end = action.payload.end
return Object.assign( {},
state, {
events: [
...state.events.slice(0, eventIndex),
newEvent,
...state.events.slice(eventIndex + 1),
]
}
)
}
注释是由console.logs打印出来的。从event_actions.js打印的日期是正确的
我还注意到当我打印state.events时,坏值已经在我的状态中。在我的案例返回任何内容之前,我的状态如何可能被更新
答复:
时刻(newstart).add(diff,“毫秒”)
我仍然不确定我的状态在返回之前是如何改变的,但是克隆对象工作的那一刻。从您的代码:
start: newstart,
end: newstart.add(diff, 'milliseconds'),
add
功能更改日期:
修理
在变异前使用克隆:谢谢你的快速回复!我没有抓住医生的可变部分。我可以这样修复:矩(newstart).add(diff,'毫秒')