在原始JS对象上使用Immutable.fromJS()
按预期工作并返回Map,但尝试使用从构造函数获取的自定义对象执行相同的Immutable.fromJS()
不会工作。
意义:
{/*1*/}
:console.log
返回自定义对象。{/*2*/}
:console.log
返回相同的自定义对象,即使我使用了Immutable.fromJS()
。{/*3*/}
:console.log
返回自定义对象。{/*4*/}
:console.log
按预期返回map = Immutable.fromJS()
。我在文档中找不到任何解释。
{/*EXPORTING CONSTRUCTOR*/}
export function MyObject() {
this.id = null;
this.name = '';
}
{/*EXPORTING RAW OBJECT*/}
export my_object = {
this.id = null;
this.name = '';
}
//in another file
//importing, and than:
let myConstructedObject = new MyObject();
let myRawObject = my_object;
{/*1*/} console.log(myConstructedObject) // => object
{/*2*/} console.log(Immutable.fromJS(myConstructedObject)) // => object ?!?!
{/*3*/} console.log(myRawObject) // => object
{/*4*/} console.log(Immutable.fromJS(myRawObject)) // => map (OK!)
答案 0 :(得分:1)
我认为本主题中的人:How do I make a custom immutable type using facebook/immutable-js?实际上从建设性角度讨论了同样的问题。
总结讨论,你不能只是" Immutivize"一个自定义对象,但您可以使用Immutable.Record(使用纯ImmutableJS)或Map(使用& 39'可扩展不可变'库)自己编写不可变对象。