gpt4 book ai didi

javascript - ImmutableJS 记录合并

转载 作者:行者123 更新时间:2023-12-03 01:19:11 33 4
gpt4 key购买 nike

我导入了一条不可变记录,并希望在将其用作应用程序的默认状态之前向其中添加一个新属性。但是,尽管尝试了 mergemergeDeepmergeWithmergeDeepWith,但我根本无法添加该属性。它返回所有实例中的调用记录。看到 this link 后,我决定尝试merge

下面的代码片段模拟了我的问题

a = Immutable.Record({a:1, b:2})
b = a()

c = Immutable.Record({z:12})
d = c()


e = b.merge(d)

console.log(e.toJS())

e = b.mergeDeep(d)

console.log(e.toJS())

e = b.mergeWith(d)

console.log(e.toJS())

e = b.mergeDeepWith(d)

console.log(e.toJS())
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>

这不适用于 v3.8.2,甚至对于 v4.0.0-rc-9 也不起作用,在所有情况下,都会返回 b 。我正在寻找使用 3.8.2 本身的解决方案,不一定使用 merge

在不可变方面没有真正的经验,因此我们将非常感谢任何帮助。

提前致谢

最佳答案

映射是键值对象的近似值,因此请使用它们来代替具有不同工厂范例的记录“记录类似于 JS 对象,但强制执行一组特定的允许字符串键,并且具有默认值。 ”。

const a = Immutable.Map({ a: 1, b: 2 }); // or Immutable.fromJS({ ... })
const b = Immutable.Map({ z:12 });

const c = a.merge(b);

console.log(c);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>

关于javascript - ImmutableJS 记录合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839181/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com