2017-01-23 45 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)