2017-06-13 31 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,「毫秒」)

我仍然不知道我的狀態回來之前如何變化,但克隆的時刻對象的工作。

回答