为什么在每个文件中都定义了mapStateToProps / mapDispatchToProps?

时间:2018-07-12 08:48:26

标签: javascript reactjs redux

人们总是似乎总是在需要的每个组件的底部定义这些功能的原因吗?

每当我创建一个react / redux项目时,我都会将它们放在/mappingFunctions目录中,然后将它们导入到我需要的文件中,从而只声明一次功能。显然,这些功能包括了不必要的功能,但这意味着它们仅在一个地方而不是定义一百万次。

只是想知道为什么这不是标准?

3 个答案:

答案 0 :(得分:1)

每个组件/容器可能需要访问redux存储中不同的变量集和不同的操作集。因此,为需要与Redux存储交互的所有那些组件分别定义了mapStateToProps和mapDispatchToProps。

此外,您无需为每个组件使用mapStateToProps,maDispatchToProps。您可以在传递道具或将每个组件连接到Redux商店之间保持平衡。

检查Use Connect or pass data as props to children以获得更多详细信息

答案 1 :(得分:0)

因为状态和传递给组件的动作通常不同

答案 2 :(得分:0)

  • mapStateToProps-这是Redux在状态的某些部分更新时调用的回调。它用于将地图Redux存储更改更新为组件的属性。您的每个组件都可能对Redux存储状态的不同部分感兴趣。如果您的容器组件不需要根据Redux存储状态更新进行更新,则无需实施此操作。
  • maDispatchToProps-这是回调,用于创建通过分派连接到redux的动作闭包。这样,Redux存储可以知道由组件触发的操作,并可以相应地更新其状态。您的容器组件将仅使用少量操作。可能发生的情况是容器组件不需要连接任何操作,因此您无需实现此操作。

如果您发现自己在各种容器组件之间复制相同的mapStateToProps / maDispatchToProps,则可能应该在应用程序的不同位置重复使用相同的容器组件,并以这种方式删除此类代码重复。