Reactjs 在Redux还原过程中,我的时间在变化

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

我有一个从组件调用的分派函数(在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 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,'毫秒')