Redux和所有应用程序状态

时间:2017-02-27 15:29:42

标签: reactjs redux react-redux

Redux文档中的

写道:

  

在Redux中,所有应用程序状态都存储为单个对象。

这就开始了我的问题。 我正在编写一个应用程序来管理 SPA (React + Redux)中很多数据的少数实体,而且有些事情让我对使用Redux感兴趣并得到一些由于我需要管理的数据量,所以会出现滞后现象。

我不相信将所有应用程序状态转移到Redux上会很好,因为在某种程度上,它可能消耗大量内存,但我可能错了。

Redux看起来(对我来说)同时如此简单和混乱,如果我应该或不应该使用它,我不会,但是,应用程序将会增长很多,我确信这将有助于我保持项目的组织。

让我害怕的另一件事是在更新状态发生时渲染DOM元素。它与在 React 上使用 setState()不同,正如我们在Dan Abramov的Redux视频中看到的那样,他正在使用 forceUpdate 在React docs中不推荐使用。

是否可以管理不同商店中的实体,但只在必要时将它们放在一起?

如果将所有应用程序状态存储在单个商店对象中,是否会占用大量内存?

使用Redux渲染React组件的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

你肯定有几个不同的问题,而你 过度思考的事情:)

首先,在客户端缓存数据在Redux中与使用任何其他Javascript框架没有区别。事实上,使用Redux缓存数据可能会占用比Backbone更少的内存,因为Redux应用程序将存储普通的JS对象和数组,而不是将数据包装在模型类实例中。在多个商店之间拆分数据,并将它们全部组合到一个商店中的单个状态树之间,在大小方面也没有区别。

现在,您缓存了多少数据取决于您,但实际上您可以轻松地将数万条记录加载到客户端应用中,而不会出现问题。

其次,不要将Dan在这些视频中显示的小例子与React-Redux库的真正工作方式混淆。 Dan试图说明一些基本的想法,而不是显示生产级代码。如果它有帮助,他实际上写了一个miniature version of connect,它显示了connect实际做什么的基本概念。同时,真正的React-Redux库经过高度优化(一旦知道数据真的发生变化,就会在内部实际使用setState。)

最后,当你可以创建多个商店时Redux FAQ advises to only use one store,原因有几个。

我最近发表了presentation that introduces the basics of React and Redux。您可能想要仔细阅读。我也鼓励你read through the Redux docs彻底。

另外,我在https://github.com/markerikson/react-redux-links上提供了大量关于React,Redux和相关主题的高质量教程和文章的链接列表。特别是对于任何想要学习生态系统的人来说都是一个很好的起点,也是有关更高级主题的良好信息的坚实来源。