2016-11-12 103 views
0

是否有一种常见的方法来将序列化引用存储在redux状态树中的不可序列化对象?在redux商店中的引用

简单的用例是从reactjs客户端上传一个[相当大的]文件到服务器。如果这种上传是由redux动作驱动的表单提交算法的一部分,我们需要在商店中保留对文件的引用。最简单的方法是将文件的全部内容保存在存储中,但这对大文件来说效率不高。

我在想的一种方法是引入一个{stringkeyBlob}的简单映射并将stringkey保存在状态树中。尽管在这种情况下,我们需要实现引用计数或其他功能来删除未使用的密钥。

有没有更好的方法?

回答

2

我不会使用商店来呃存储大文件。它维护你的应用程序的状态,所以对文件的引用应该是所有必需的(顺便说一句,按照数据库的实践,保持商店规范化是一种好的做法)。

我会保持从reducer逻辑上传文件的副作用。您可以使用redux中间件来完成此操作,以便文件作为操作的一部分进行上传;在成功后,随后的动作会使用随后呈现,应用程序状态等所需的任何内容来更新存储。实际文件(如果需要的话)可以存储在其他地方并仅从您的商店引用。

+0

我同意,绝对不打算在商店中存储文件。尽量避免使用中间件,尽管这可能是其中一种选择。更多关注从商店中引用不可序列化对象的正确方法(最好是通用方法)。虽然也许有人已经为此 –

+0

确定了通用插件解决方案;祝你的项目好运。 –