React Redux应如何处理不可序列化的数据?

React Redux应如何处理不可序列化的数据?,redux,react-redux,Redux,React Redux,假设您正在编写一个基于web的字处理器应用程序,并且因为您不想处理读写大量不同文档格式的问题,所以您使用第三方库来完成该部分 当您读取文档时,库将返回一个类实例,您可以修改该类实例,然后将其传递回库以再次保存该文档。您必须将原始实例传回库中,因此您需要在应用程序编辑文档时保留该实例 显然,您不能将其用于React-Redux,因为一旦您尝试将该类实例保存到状态,它就会抱怨它是不可序列化的。很公平,但是您应该如何保持这个类实例呢 文档包含一个标题为的部分,不幸的是,该部分实际上没有告诉您如何处理不

假设您正在编写一个基于web的字处理器应用程序,并且因为您不想处理读写大量不同文档格式的问题,所以您使用第三方库来完成该部分

当您读取文档时,库将返回一个类实例,您可以修改该类实例,然后将其传递回库以再次保存该文档。您必须将原始实例传回库中,因此您需要在应用程序编辑文档时保留该实例

显然,您不能将其用于React-Redux,因为一旦您尝试将该类实例保存到状态,它就会抱怨它是不可序列化的。很公平,但是您应该如何保持这个类实例呢

文档包含一个标题为的部分,不幸的是,该部分实际上没有告诉您如何处理不可序列化的数据,只是告诉您不应该这样做。但在上面的例子中,这是不可避免的,所以肯定有某种方法可以做到这一点,而不只是禁用所有警告,并期待最好的结果


您是否应该将这样的内容存储在一个全局变量/单例中,并在Redux存储中放置标志,如“documentOpen:true”,然后在再次需要该实例时仅引用全局对象?这似乎不是一个很好的方法,但我找不到任何其他方法来解决这个问题(除了禁用警告)。

是的,根据文档,这种类实例不属于存储状态,因为a)它实际上不是“状态”,和B)当与DevTools一起使用时,它将无法正确序列化


对我来说,这类类实例要么严格属于UI层,要么属于某种中间件,但这实际上取决于该实例的功能以及您需要如何与之交互。

感谢您的回复。所以在我的例子中,这个对象提供了UI应该允许编辑的信息。继续文档类比,它可能会提供段落对象和一些图像对象的列表。如果用户右键单击一个图像以替换为一个新的图像,我会自然而然地假设所讨论的图像对象进入状态,因为这是用户界面随后构建的操作的主题。你会如何把它放在UI层,还是我误解了商店的用途?这实际上取决于这个“文档实例”是什么以及应用程序如何与之交互。你能指出这个工具和它的文档的一个例子吗?一个例子是(在页面上搜索“快速入门”的示例代码)。它读取一个归档文件(如.zip文件)并返回一个
archive
类实例。作为编辑文件的一部分,用户界面操作应对此进行修改。然后将该
存档
实例传递回库,以将其转换回.zip或类似文件,供用户保存。
Archive.files[].getContent
属性是一个回调函数,用于读取归档文件中的文件内容,因此很难序列化。是的,很遗憾,这绝对不应该进入Redux存储区。可能吧?Redux的设计很大程度上是基于这样一种假设,即您在应用商店中使用的数据是纯JS对象和数组。如果你的应用程序是围绕着操纵某种类而构建的,那么这很可能不是一个好的范例。可能有其他方法来解决这个问题,但如果不具体查看应用程序的设置,很难说。