2017-03-29 76 views
0

我正在使用seamless-immutable和redux,並且在更新狀態時出現一個奇怪的錯誤。這裏是我的代碼,沒有像動作返回或combineReducers那樣的位。只是運行中的垃圾/導致錯誤。seamless-immutable不是一直更新狀態

初始狀態

{ 
    things: { 
    fetching: false, 
    rows: [] 
    } 
} 

操作處理程序

export default { 
    [DEALERS_REQUEST]: (state, action) => { 
    return Immutable({ ...state, fetching: true }); 
    }, 
    [DEALERS_RECEIVE]: (state, action) => { 
    return Immutable({ ...state, rows: action.payload, fetching: false }); 
}, 

中間件的thunk

export const thingsFetch = (data) => { 
    return (dispatch, getState) => { 
    dispatch(thingsRequest()); 
    dispatch(thingsReceive(data)); 
    } 
} 

現在,奇怪的是,如果我一起運行這兩個動作,一切都很好。

如果我只調度thingsRequest(),我得到一個「無法推送到不可變對象」的錯誤。

我試過使用像設置,更新,替換,合併的方法,但他們通常返回「this.merge不是一個函數」。

我是否在程序上做錯了什麼或者我應該聯繫模塊開發者來報告問題?

回答

0

對此的問題是,對於空數組的情況,組件試圖用它自己的錯誤消息回寫到Immutable對象。

爲了解決這個問題,我把prop作爲mutable來傳遞。還有一些redux-immutable模塊,它將傳統的連接功能替換爲所有應用程序,以將可變道具傳遞給組件,同時保持狀態不變。