我正在使用redux persist在文档中描述的应用程序启动时自动持久化和重新水化状态,特别是使用AsyncStorage:https://github.com/rt2zz/redux-persist。
它适用于String。这就是存储的所有状态,因为String被正确地保存和再水化。
但是对于自定义对象图,它会正确地重新水化状态。我很确定这是因为字符串是可序列化的,而对象映射则不是。
这是reducer,其中productTypeToProducts代表该地图。当补水时它是空的
case 'RECEIVE_ALL_PRODUCTS':
return Object.assign({}, state, {
productTypeToProducts: action.productTypeToProducts
});
因此我需要使用类似JSON.stringify的东西来将我的状态树转换为JSON。
如何实现这一点,以便在应用程序启动时,对象状态(而不是JSON)会自动重新水合。 (我猜这与在文档中使用转换有关吗?)
答案 0 :(得分:0)
似乎默认情况下AsyncStorage与redux-persist结合使用,可以正确序列化一个对象数组。所以我在我的减速机中将地图转换为数组,并且适当地补充了状态。
case 'RECEIVE_ALL_PRODUCTS':
let productsObject = {};
action.productTypeToProducts.forEach((value,key)=>{
productsObject[key] = value
});
return Object.assign({}, state, {
productsAsObject: productsObject,
});