Redux-persist响应本机AsyncStorage对象映射序列化

时间:2017-01-09 02:55:09

标签: reactjs react-native redux react-redux

我正在使用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)会自动重新水合。 (我猜这与在文档中使用转换有关吗?)

1 个答案:

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