在动作中深度克隆我的状态有哪些方法?
我见过的可能解决方案是Immer.js,JSON.parse(JSON.stringify)
,或创建一个进行深度克隆的递归函数。我什至在考虑重新创建Redux的功能,并创建Reducers并将其合并为整个状态,但是出于某些原因,我决定反对它。我喜欢在Aurelia商店中,如何在每个自定义元素的bind()方法内push Actions到商店。我认为这是一种更好的方法,因为它可以促进high cohesion and low coupling。借助Redux,我将所有的Actions和Reducer集中在商店中。
我从未使用过Immer.js,我想知道使用它的优点和缺点?
我喜欢使用JSON.parse(JSON.stringify)
的想法,因为它可以确保我的状态始终可序列化。如果我想将状态持久化到某种类型的存储,那将是很好的。当我尝试使用Set和Map对象类型时,它可以让我及早发现问题,然后我很快发现这些问题并不能通过上述方法进行序列化/反序列化。但我想知道如果我的商店过大,JSON.parse(JSON.stringify)
会变得太慢吗?
然后可以选择仅创建一个复制我的状态的递归函数。有人尝试过吗?
谢谢
编辑-2018年9月26日 我还在aurelia话语论坛上问了这个问题,并在那获得了一些有用的答复。 https://discourse.aurelia.io/t/using-aurelia-store-what-is-the-best-way-to-copy-your-state-within-actions/