有哪些方法可以在 Action 中深度克隆我的状态?
我见过的可能的解决方案是Immer.js,JSON.parse(JSON.stringify)
或者创建一个递归函数来进行深度克隆。我什至在考虑重新创建 Redux 所做的事情并创建Reducer并将它们组合到我的整个状态中,但我决定反对它是有原因的。我喜欢在 Aurelia 商店中如何将操作推送到商店,在每个自定义元素的 bind() 方法中。我相信这是一种更好的方式,因为它促进了高内聚和低耦合。而在 Redux 中,我所有的 Actions 和 Reducers 都集中在 store 中。
我从未使用过 Immer.js,我想知道使用它有哪些优点和缺点?
我喜欢使用的想法,JSON.parse(JSON.stringify)
因为它确保我的状态在任何时候都是可序列化的。如果我想将我的状态保存到某种类型的存储中,这将是一件好事。它使我能够尽早发现问题,例如当我尝试使用 Set 和 Map 对象类型时,我很快发现那些不使用上述方法进行序列化/反序列化。但是我想知道如果我的商店变得太大会JSON.parse(JSON.stringify)
变得太慢吗?
然后可以选择只创建一个复制我的状态的递归函数。有没有人试过这个?
谢谢
编辑 - 2018 年 9 月 26 日, 我还在 aurelia discourse 论坛上提出了这个问题,并在那里收到了一些有用的回复。 https://discourse.aurelia.io/t/using-aurelia-store-what-is-the-best-way-to-copy-your-state-within-actions/