我最近开始使用Redux,到目前为止一切都进展顺利。但是,随着我的应用程序的增长,我开始质疑它的结构的最佳实践。大多数教程和文档都给出了非常小的例子,所以我不确定我应该采取什么方向。
基本上我的应用程序非常庞大,并且它在各个模块中分开,这些模块完全相互独立。
根据我的理解,应用程序只做一件事,所以我正在编写我的代码,考虑每个单独的模块它自己的应用程序,因为它们是完全独立的,每个都做一个完全不同的任务。
就像现在一样,我构建的方式是每个模块都有自己的小型redux结构。所以文件夹如下:
- module1
- actions
- reducers
- containers
- components
- module2
- actions
- reducers
- containers
- components
...
显然,他们将所有内容放在一个主App文件中,然后将它们全部路由到。
随着我的应用程序的增长,我很遗憾地注意到很多代码实际上都在重复。所以我开始怀疑我的方法是否在适当的情况下是正确的,或者如果最好只与所有模块共享所有内容,那么排序如下:
- actions
-module1Actions
-module2Actions
- reducers
-module1Reducers
-module2Reducers
- containers
-module1Containers
-module2Containers
- components
-module1Components
-module2Components
有人可以了解哪种方法更好?
答案 0 :(得分:1)
有很多React / Redux应用程序结构的方法。还有很多方法可以更好地封装逻辑和功能块。 Redux的一个权衡因素是全局状态使应用程序级别的内容更容易处理,但封装可能更难。
我的React/Redux links list有两个相关信息类别。我有一篇关于React/Redux project structure的文章。还有许多文章和代码尝试试图解决完全封装和可重复使用的逻辑块"问题。我在Redux Techniques#Encapsulation部分提供了这些文章和讨论的链接。
在一个半相关的说明中,有一大堆lib试图帮助解决Redux中的"每个组件状态"概念。他们中的大多数基本上都设置了状态的顶级片段,并存储了由ID键入的组件数据,并且有方法为组件生成ID。我在Redux addons catalog页面的Component State中找到了他们的列表。我自己还没有真正尝试过任何一种,只是将它们编目。
最后,Redux FAQ在http://redux.js.org/docs/faq/CodeStructure.html#structure-file-structure上有关于该主题的一些相关信息。
答案 1 :(得分:0)
是的,你的方法是绝对正确的 - 并且很多样板代码(这是非常难以避免的)只是Redux的一个特性,而不是bug。因此,惯用应用程序有很多模块,就像你一样。
不幸的是,很难统一它,因为从项目到项目,减速器是非常独特的,所以我不知道任何成功和流行的实现。有一个mobX库,它可以消除合并状态(因为你可以在那里改变数据),但它似乎只适用于小项目。
所以,根据我自己的经验,我可以给你的一个建议就是编写 modules factory ,这将产生动作,减少器和选择器,如果你的端点有类似的结构,什么时候会减少很多样板。但是,独特的东西(比如登录)基本上不可能一概而论。