2017-03-29 17 views
0

シームレス不変とレビュックスで作業しています。状態を更新するときに奇妙なエラーが発生します。ここで私のコードは、アクションリターンやcombineReducersのようなビットなしです。実行中の/エラーを引き起こすジャンクだけ。サンクとシームレス不変の状態が一貫して更新されていません

初期状態

{ 
    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 }); 
}, 

ミドルウェア

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

今奇妙なのは、私がこれらの2つのアクションを一緒に実行すると、すべてが問題ないということです。

私が発送するのはthingsRequest()のみで、「不変のオブジェクトにプッシュできません」というエラーが表示されます。

私はset、update、replace、mergeのようなメソッドを使ってみましたが、通常は "this.mergeは関数ではありません"と返されます。

私は手順上間違ったことをしていますか?問題を報告するためにモジュールdevに連絡する必要がありますか?

答えて

0

この問題は、空の配列の場合、コンポーネントが独自のエラーメッセージで不変オブジェクトに書き戻そうとしていたことが原因でした。

これを回避するには、私は小道具を変更可能なものとして渡します。状態の不変性を維持しながら、コンポーネントに変更可能な小道具を渡すために、すべてのアプリに従来の接続機能を置き換えるいくつかの還元不変のモジュールもあります。

関連する問題