我在Immutable集合的帮助下管理了一个州的部分。 例如,
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对象转换回嵌套集合(例如包含作为List的字段)。
我已经尝试使用Immutable.fromJS()
方法,但显然它不适用于Record
。有没有人面临同样的问题?请帮忙解决它
答案 0 :(得分:1)
我认为您需要先将import {Component, Input} from '@angular/core'
@Component({
selector: 'my-cool',
template: `
cool {{text}}
`,
})
export class MyCoolComponent {
@Input('text') text:String;
constructor() {
this.text = `test`
}
}
序列化,然后再将其设置为localStorage。从localStorage获取后,您可以使用JSON.stringify()
答案 1 :(得分:1)
我使用transit-immutable-js lib取得了成功。
来自docs:
" 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