Javascript 如何使用redux持久化存储es6映射?

Javascript 如何使用redux持久化存储es6映射?,javascript,reactjs,ecmascript-6,redux,Javascript,Reactjs,Ecmascript 6,Redux,我正在尝试使用redux persist存储ES6映射,以便在页面刷新时不会丢失数据。这就是我试图使用的代码 const initialState = { subevents: new Map() }; const subEventsReducer = (state = initialState, action) => { switch (action.type) { case ACTIONS.SET_SUBEVENT: { const subevents =

我正在尝试使用redux persist存储ES6映射,以便在页面刷新时不会丢失数据。这就是我试图使用的代码

const initialState = {
  subevents: new Map()
};

const subEventsReducer = (state = initialState, action) => {
  switch (action.type) {
    case ACTIONS.SET_SUBEVENT: {
      const subevents = state.subevents;
      subevents.set(action.subevent.key, action.subevent);
      return {
        ...state,
        subevents
      }
    }
    default:
      return state;
  }
};

const transformSubeventMap = createTransform(
  (state) => {
    return { ...state, subevents: JSON.stringify([...state]) }
  },
  (state) => {
    console.log(state);
    return { ...state, subevents: JSON.parse(new Map(state.subevents)) }
  }
);

const subevents = persistReducer(
  {
    version: 1,
    key: 'subevents',
    storage,
    transforms: [transformSubeventMap],
    whitelist: ['subevents']
  },
  subEventsReducer
);

export default subevents;

我想将subevents属性存储为(日期,数组)的映射。你知道为什么这不起作用吗?

我还没有试过你的代码,但我觉得你的代码有错误。您可能没有添加
子事件
属性:

const transformSubeventMap=createTransform(
(州)=>{
返回{…state,subevents:JSON.stringify([…state.subevents])}
},
(州)=>{
console.log(状态);
返回{…state,subevents:JSON.parse(新映射(state.subevents))}
}
);
但这可能还不够。由于
redux persist
不处理ES6映射,因此必须将它们转换为数组以正确保存它们。此外,您不需要转换为JSON

试着这样做:

const transformSubeventMap=createTransform(
(州)=>{
返回{…状态,子事件:Array.from(state.subevents)}
},
(州)=>{
console.log(状态);
返回{…状态,子事件:新映射(state.subevents)}
}
);
您还可以将带有白名单的选项对象传递给转换器,使其更加简单:

const transformSubeventMap=createTransform(
subeventsMap=>Array.from(subeventsMap),
subeventsArray=>新映射(subeventsArray),
{白名单:['subevents']}
);

这是否相关?是的,我确实看过,但那不是我想要的。你知道如何解决这个问题吗?
JSON.parse(newmap(state.subevents))
你正在解析一个
Map
,而你应该解析一个
JSON
字符串