Javascript ImmutableJS记录合并
我导入了一个不可变记录,并希望在将其用作应用程序的默认状态之前向该记录添加一个新属性。但是,尽管尝试了Javascript ImmutableJS记录合并,javascript,merge,record,immutable.js,Javascript,Merge,Record,Immutable.js,我导入了一个不可变记录,并希望在将其用作应用程序的默认状态之前向该记录添加一个新属性。但是,尽管尝试了merge、mergeDeep、mergeWith和mergeDeepWith,我还是无法添加属性。它返回所有实例中的调用记录。看了之后,我决定尝试合并 下面的代码片段模拟了我的问题 a=Immutable.Record({a:1,b:2}) b=a() c=不可变的.Record({z:12}) d=c() e=b.合并(d) console.log(e.toJS()) e=b.d cons
merge
、mergeDeep
、mergeWith
和mergeDeepWith
,我还是无法添加属性。它返回所有实例中的调用记录。看了之后,我决定尝试合并
下面的代码片段模拟了我的问题
a=Immutable.Record({a:1,b:2})
b=a()
c=不可变的.Record({z:12})
d=c()
e=b.合并(d)
console.log(e.toJS())
e=b.d
console.log(e.toJS())
e=b.与(d)合并
console.log(e.toJS())
e=b.与(d)合并
console.log(e.toJS())
映射是键值对象的近似值,因此请使用这些映射,而不是具有不同工厂范例的记录“记录类似于JS对象,但强制执行一组特定的允许字符串键,并具有默认值。”
const a=Immutable.Map({a:1,b:2});//或不可变。fromJS({…})
const b=Immutable.Map({z:12});
常数c=a.merge(b);
控制台日志(c)代码>
只是想澄清一下:您想要一个带有{a:1,b:2,z:12}
的新记录?@DominicTobias是的,这很好,但我有点受现有项目结构的限制,需要使用Record。使用记录实现这一点的任何方法?您编写代码的方式与合并不起作用,因为a
和c
是非实例化工厂,只允许修改在那里设置为默认值的键。i、 e如果您从a
(new a()
)进行记录,则不允许使用键z
,因为出厂时未列出该键。