2017-06-13 28 views
0

我有一个调度功能(在event_actions.js)期间改变正在从一个组件调用:我的时刻的时间Redux的减速

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 } 
} 

这里是我的“MOVE_EVENT”的情况下,从event_reducer.js:

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)。新增(DIFF,“毫秒”)

我仍然不知道我的状态回来之前如何变化,但克隆的时刻对象的工作。

回答