Serialization 为什么Redux应用程序的存储必须是可序列化的

Serialization 为什么Redux应用程序的存储必须是可序列化的,serialization,redux,Serialization,Redux,首先:这不是一个意见问题(我担心有人会提出这个问题),我感兴趣的是技术背景或这方面的决定 也就是说:Redux的存储需要可序列化。不允许或不赞成使用模型类并在存储中编写它们的实例。这让我非常恼火。应用程序逻辑以动作或减缩器结束,在这些动作或减缩器中,模型是一件很好的事情 我想知道为什么。这背后的技术决定是什么?为什么不将类实例写入存储?1)实例中的类是可变的,这导致redux试图通过支持不变性来解决状态可预测性方面的相同问题。这还意味着如果与React配对,您必须执行更多的手动shouldCom

首先:这不是一个意见问题(我担心有人会提出这个问题),我感兴趣的是技术背景或这方面的决定

也就是说:Redux的存储需要可序列化。不允许或不赞成使用模型类并在存储中编写它们的实例。这让我非常恼火。应用程序逻辑以动作或减缩器结束,在这些动作或减缩器中,模型是一件很好的事情

我想知道为什么。这背后的技术决定是什么?为什么不将类实例写入存储?

1)实例中的类是可变的,这导致redux试图通过支持不变性来解决状态可预测性方面的相同问题。这还意味着如果与React配对,您必须执行更多的手动
shouldComponentUpdate
检查更改(因为对变异实例的引用将是相同的,即使其内部状态已更改)

2) 不变性使得在状态之间来回移动成为可能(例如在时间旅行调试期间),这是在实例中发生突变时无法做到的

3) 序列化意味着它非常容易持久化和重新水化存储(到JSON/从JSON)以用于更高级的用途,如服务器端渲染和脱机使用


如果您感兴趣,我刚刚就一个类似的问题写了一个更深入的答案,并举例说明如何做到两全其美

您能举一个您正在考虑的用例的例子吗?这是我在学习Redux时遇到的困难,但我能够正确地避免。