我在React应用程序中使用draft-js
,然后使用redux-persist
重新存储存储在localStorage中的状态。我需要将我的EditorState存储在我的redux存储中,因为存储ContentState对我来说还不够:更改富文本编辑器样式的按钮并不位于真正的EditorState组件附近。我正在研究时这不是问题。但是,当我需要使用redux-persist
对数据进行水化处理时,就会存在问题:创建时,EditorState正确保存在我的redux存储中,如下所示:
当我重新加载页面并使redux-persist
补水时,它看起来像这样:
[我应该补充一点,就是我的状态中有一些不可变的Records
,我需要对其进行解析,而当我用redux-persist
对代码进行补水时,所有这些都需要解析,这是我使用的代码(我认为解决方案在那里,但是我可以找不到确切的位置)
import storage from 'redux-persist/lib/storage';
import { createTransform } from 'redux-persist';
import Serialize from 'remotedev-serialize';
import Immutable, { Record } from 'immutable';
const ExampleRecord = Record({
anyData: 'here'
}, 'ExampleRecord')
/*
For info, here is how would look the state
const state = {
example: {
record: ExampleRecord(),
editorState: EditorState.createEmpty()
}
}
*/
const records = [
ExampleRecord
]
const serializer = Serialize.immutable(Immutable, records);
const immutableTransform = createTransform(serializer.stringify, serializer.parse, {
whitelist: ['example'],
});
export default {
key: 'example',
version: 0,
storage,
transforms: [immutableTransform],
};
您找到解决方案了吗?