2017-01-23 10 views
0

私はアプリケーションの状態を維持するためにimmutable.jsを使用します。だから私は、私はいつでも、Webページの変更に何かを、フェッチどこかに保存し、からデータを取得し、状態を更新する必要が要求応答を持って還元状態で大きなリクエストを維持

const initialState = new Map({ 
    data: null, 
    page: 1, 
    ... 
}); 

:それはのような不変のマップされた複数の組み合わせレデューサー、で作られています。

質問は - です。生のリクエスト応答はどこで還元しておきますか?

私はそれを状態の中に保ちたいとします。私は次のアプローチを試みた:

case FETCH_RESPONSE: 
    return state.merge({ 
     rawRequestResponse: action.response // very slow, deep conversion to Immutable 
    }) 
case FETCH_RESPONSE: 
    return state.set({ 
     rawRequestResponse: action.response // also slow, it's converted to Immutable, though not deeply 
    }) 
case FETCH_RESPONSE: 
    return new Map({ 
     rawRequestResponse: action.response, // just like above 
     ... 
    }) 

しかし、それらはすべて遅すぎる。これを行う最善の方法は何ですか?

+0

が本当に必要な生のリクエストですあなたの州の一部ですか?それが本当にredux店の中に住んでいる必要がある場合は再考してください。とにかくそれはどれくらいの大きさですか?巨大なコレクションを扱う場合は、APIにページネーションを追加し、クライアントのコレクションエンティティをキャッシュすることを検討してください。 – VanDanic

答えて

0

set()にプレーンなオブジェクトを渡すわからない、しかし、あなたは、文字列、第二引数として、値としてキーを渡した場合、何も変換されるべきではない:

return state.set('rawRequestResponse', action.response) 
関連する問題