我即将开始一个新的React项目,并试图利用我以前的学习来创建一些关于我如何构建应用程序的规则。
我认为有些事情是真的:
setState
保持自己的状态。FooContainer.js
和FooComponent.js
个文件 - Redux连接代码将位于容器中。应用程序的大部分内容都很重,并且有很多UI逻辑/状态,但不需要Redux中的任何状态。
我觉得随着组件级状态的自由使用,我应该使用更多的容器组件来组成更小的无状态组件。但是,我看到很多容器组件的定义为"连接到Redux的HOC"
拥有一个包含许多容器组件的项目是有意义的,其中一些是Redux连接并将数据从商店传递到相应的表示组件,而另一些则不是Redux连接但仅用于撰写较小的组件和管理本地状态?
如果是,是否有任何推荐的文件结构,命名约定等来区分这两者?
答案 0 :(得分:3)
一些想法。
首先,理解一个容器组件"只是任何组件,其主要工作是从某处获取数据并将该数据传递给其子级。这可能意味着进行AJAX调用以检索数据或访问Flux存储。这意味着React-Redux的connect
函数生成的包装器组件是"容器组件",因为它们唯一的工作是从Redux中提取数据商店。这也意味着其工作是管理UI状态的组件也是 "容器组件"。请参阅Dan Abramov's original article on container and presentational components。
其次,使用类组件和功能组件非常有趣,尽可能多或少。这纯粹取决于你。
第三,当你可以定义你的"普通"一个文件中的组件,以及" connect"他们在另一个文件中,我个人倾向于认为这是不必要的分离。大多数情况下,给定的React组件只会连接一次,因此定义组件和将它连接到同一个文件中是完全合理的。
您可能需要阅读Redux Architecture中Project Structure和React/Redux links list上的一些文章,了解更多信息。
答案 1 :(得分:0)
修改你的假设:
回答你的问题:
拥有一个包含许多容器的项目是否有意义 组件,其中一些是Redux连接并从中传递数据 存储到相应的表示组件
是的 - 将应用程序分成较小的组件与自己的容器是很好的做法。
和其他不是Redux连接但仅用于编写的 较小的组件和管理本地状态?
不是真的IMO - 在Redux中,应用程序的状态应该只保存在一个独特的商店中。如果相关的话,你仍然可以在容器中放置更小的简单组件。