2017-01-23 98 views
0

我使用immutable.js來保持我的應用程序狀態。它是由多重合成減速,這是不可改變的地圖,如:保持較大的請求狀態爲

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

所以,我有我需要獲取的請求響應,保存的地方,得到的數據,並更新狀態,每當一些網頁上的變化。

現在的問題是 - 我在哪裏保持原始請求響應在REDX?

比方說,我想保持它的狀態。我嘗試了以下方法:

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)