首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux与mapDispatchToProps反应

Redux与mapDispatchToProps反应
EN

Stack Overflow用户
提问于 2017-08-10 07:49:35
回答 2查看 3.3K关注 0票数 0

查看如何使用mapDispatchToProps的示例--大多数示例遵循以下模式,一个以dispatch作为参数返回对象的函数:

代码语言:javascript
复制
const mapDispatchToProps = (dispatch) => {
    return({
        someFunc: (arg) => {dispatch(someFunc(arg))}
    })
}

我的问题是,如果我的所有操作都使用thunk,也就是说它们都可以访问dispatch,那么为什么我需要使用上面的示例来将函数映射到dispatch中的道具呢?

在实验之后,我想出了另一个可行的方法,但我不确定这是否是最佳实践。

Main.jsx

代码语言:javascript
复制
import * as mainActions from '../actions/mainActions'
import * as menuActions from '../actions/menuActions'

const actionsToMap = {...mainActions, ...menuActions}
export default connect(mapStateToProps, actionsToMap)(Main)

这种方法有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 13:03:42

这两种方法都是正确的,当您希望将一些操作创建者向下传递到一个不知道Redux的组件时,您也可以使用bindActionCreators,并且您也不希望将分派或Redux存储传递给它。从技术上讲,这是唯一的用例。

文档中提取它,mapDispatchToProps可以是一个函数或对象。

我认为您的第一种方法对于文档是很好的,因为您可以轻松地看到您在组件中使用的动作创建者的签名,而不必导航到动作创建者文件。除此之外,在大多数情况下,我可以使用对象(您的第二种方法)。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2018-11-12 11:15:38

将关注点分开是个好主意,在几乎所有的应用程序中,使用Action (这就是在第二个例子中所做的)来反对使用普通对象(就像在第一个应用程序中那样)是一个好主意。

有几个好处:

  1. 如果不隐藏在对象/函数中,则更容易扩展和转换
  2. 更容易测试一个孤立的、功能性的动作。(您试过测试第一个示例吗?)
  3. 如果您的应用程序的其他部分需要分派相同的操作,您会剪切并粘贴这个分派吗?
  4. 现在,将1和3放在一起考虑,如果您已经在几个地方发送了这个,并且需要扩展?

不仅仅是我这么说,Redux文档在这里涵盖了它:https://redux.js.org/recipes/reducingboilerplate#action-creators

尽管如此,他们也说普通的对象可能已经足够了,但是考虑到实际上是多么简单的动作创建者,在几乎所有的情况下,让您的工作都是可扩展的可能是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45607570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档