将Action创建者传递给react-redux应用程序中的功能组件的好习惯?

时间:2017-04-07 10:55:04

标签: reactjs redux react-redux

I'm using a tab to render what gets displayed in the modal

我已经将大部分容器转换为功能组件以使它们可重用,我想知道将Action Creators作为道具传递给这些功能组件是否是一种好习惯。

在这种情况下,我使用选项卡在Login和Sign Up页面之间切换,我使用本地状态来管理活动类(用于样式)。我将动作创建者称为道具,以在呈现登录或注册页面之间切换。我在几个地方使用此选项卡,我根据用例传递不同的配置对象。

homePageTabProps = {
  firstTabTitle:"blog",
  secondTabTitle:"resume",
  showFirstTab: this.props.showBlogTab,
  showSecondTab: this.props.showResumeTab
}

这是好习惯吗?是或不是吗?

编辑:

活动标签样式给我带来了问题(重新使用组件时保留了值)。我可以拥有本地& 全局状态吗? (对不起,如果这听起来很愚蠢。)

1 个答案:

答案 0 :(得分:4)

将功能作为道具传递到Components的层次结构中,这肯定是广为接受的做法。但我建议不要传递裸动作创建者,但在将它们传递给dispatch之前将它们绑定到Component。这样,如果您的孩子Component未与store相关联,则根本不需要了解Redux(无需手动dispatch)。

至于你对两个州的并发症。混合自己的Component状态与Redux通过Component传递给connect的部分没有错。我甚至强烈建议保留所有临时数据对Component状态内的应用程序逻辑不重要,而不将其暴露给Redux。例如,在大多数情况下,将动画时序,用户输入的中间状态等发送到Redux是没有意义的。

但是,在您的情况下,看起来活动标签的指示是Redux状态的直接反映,应该从商店获取。否则,不清楚为什么要对标签的更改向Redux发送操作。