2017-07-30 85 views
0

這個reducer看起來不錯嗎?爲什麼作者使用了let users;,這對我來說看起來沒有必要。是不是會導致FETCH_USER_FULLFILLED情況下的2個用戶?redux中的不可變reducer

const initalState = { 
    users: [], 
    loading: false, 
    error: null, 
}; 

// REDCUER 
function usersReducer(state = initalState, action) { 
    let users; 
    switch (action.type) { 
    case 'FETCH_USER_PENDING': 
     return { ...state, loading: true }; 
    case 'FETCH_USER_FULFILLED': 
     users = action.payload.data.results; 
     return { ...state, loading: false, users }; 
    case 'FETCH_USER_REJECTED': 
     return { ...state, loading: false, error: `${action.payload.message}` }; 
    default: 
     return state; 
    } 
} 

export default usersReducer; 
+0

用戶是不必要的,我是這麼認爲的是使用模板文字的'錯誤:\'$ {action.payload.message} \'' –

回答

0

減速機是好的,它不會在FETCH_USER_FULLFILLED導致兩個用戶。然而,你是對的,沒有必要爲let users;。因此,代碼會看起來像

case 'FETCH_USER_FULFILLED': 
    return { ...state, loading: false, users: action.payload.data.results }; 

在減速機第一次執行時,它會因爲它是默認的,如果沒有參數沒有通過利用其起始狀態從initalState。所以users將空數組開頭並將於FETCH_USER_FULLFILLED行動充滿

編輯users加入利用財產value shorthand特徵在ES6