[英]How to convert a plain JS object to an Immutable collection?
我有一部分状态是在不可变集合的帮助下管理的。 例如,
const FolderModel = Record({
id: null,
name: '',
items: List()
})
const DocsModel = Record({
folder1: new FolderModel({
id: 1,
name: 'Избранное'
}),
folder2: new FolderModel({
id: 2,
name: 'Отложенное'
}),
folder3: new FolderModel({
id: 3,
name: 'Топ тендеры'
})
})
const initialState = new DocsModel()
我也将状态保存在localStorage
,所以问题是从localStorage
检索状态时,我不知道如何将JS对象转换回嵌套的集合(例如,Record包含一个List字段)。 我已经尝试过使用Immutable.fromJS()
方法,但是显然不适用于Record
。 有人遇到过同样的问题吗? 请协助解决
我相信您需要JSON.stringify()
序列化集合,然后再将其设置为localStorage。 从localStorage取回后,可以使用JSON.parse()
反序列化
我已经成功使用了transit-immutable-js lib。
从文档 :
“ Transit是一种序列化格式,它建立在JSON之上,以提供更丰富的类型集。它是可扩展的,这使其成为轻松为Immutable的类型提供序列化和反序列化功能的理想选择。”
记录的用法示例:
var FooRecord = Immutable.Record({ a: 1, b: 2, }, 'Foo'),
foo = new FooRecord(),
serialize = transit.withRecords([FooRecord]),
json = serialize.toJSON(foo);
console.log(json); //=> json string of your data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.