我正在使用redux,我不确定如何组织我的组件,我认为最好是将它们保存在文件夹中,以主组件的名称作为文件夹的名称,所有内部组件都在其中:

components
  Common/   things like links, header titles, etc
  Form/     buttons, inputs, etc
  Player/   all small components forming the player
    index.js  this one is the top layout component
    playBtn.js
    artistName.js
    songName.js
  Episode/  another component

然后,在containers文件夹中,我每页有一个容器,这是我实际连接到Redux的唯一容器:

containers/
  HomePageApp.js
  EpisodePageApp.js
  ...

然后每个顶层组件都有一个动作,而不是每页一个动作,所以在我连接到Redux的页面容器中,我传递该页面中使用的组件的所有动作.例如:

actions/
  Player.js
  Episode.js
  ...

我这样做对吗?我在谷歌上找不到太多关于它的信息,我发现的那些信息只限于小项目.

谢谢

推荐答案

在官方示例中,我们有几个顶级目录:

  • “dumb”个不知道Redux的react 组分为components
  • containers表示连接到Redux的"智能"React组件;
  • actions适用于所有action creators,其中文件名对应于应用程序的一部分;
  • reducers表示所有减速器,其中文件名对应于状态键;
  • store用于存储初始化.

这适用于中小型应用程序.

当你想把更多的模块化和相关功能组合在一起时,Ducksother ways of grouping functionality by domain是构建Redux模块的一种不错的替代方式.

最终 Select 最适合你的 struct .Redux作者不可能比你更了解什么对你更方便.

Reactjs相关问答推荐

捕获表单数据时的Reactjs问题

生成Reaction Vite应用程序的停靠容器时无法识别环境变量

Reaction-Query&-使用Mutation触发成功,而应该触发错误

基本react 应用程序正在触发两次Use Effect

同一文件中前端和后端的Nginx配置

无法找出状态正在被更改的位置

根据用户 Select 的注册类型更改表单字段

如何使用 App Router 和服务器组件在 Next.js 13 中实现分页

警告:遇到两个子元素拥有同一把 keys .键应该是唯一的,以便组件在更新时保持其身份

Next.js `getLayout` 函数没有被调用

如何更改TimePicker中下拉菜单的背景 colored颜色 和字体 colored颜色 - MUI React

我可以在加载器函数中多次 fetch() 并使用一次 useloaderdata() 提取它吗?

需要先填写依赖输入字段,以便其他人工作

我正在通过 API(有效)从 MongoDB 传递数据.可视化但我不断收到此 TypeError: Cannot convert undefined or null to object

@react-three/postprocessing 没有匹配的从 three.module.js 导出以导入WebGLMultisampleRenderTarget

当从数组中删除数据时,UseEffect 不会重新渲染,仅在添加数据时才会重新渲染

当用户输入相同信息时如何禁用更新

导航到屏幕时,react 本机上下文状态变为未定义

react 路由dom没有路由匹配位置错误/在路由中制作组件

从输入中获取数字时,react 计数器不会增加