Reactjs 使用mapDispatchToProps对Redux Thunk作出反应
查看如何使用Reactjs 使用mapDispatchToProps对Redux Thunk作出反应,reactjs,redux,redux-thunk,Reactjs,Redux,Redux Thunk,查看如何使用mapDispatchToProps的示例,大多数示例遵循以下模式,该函数以dispatch作为参数返回对象: const mapDispatchToProps = (dispatch) => { return({ someFunc: (arg) => {dispatch(someFunc(arg))} }) } 我的问题是,如果我的所有操作都使用thunk,这意味着它们都可以访问dispatch,为什么我需要使用上面的示例来将函数映射到
mapDispatchToProps
的示例,大多数示例遵循以下模式,该函数以dispatch
作为参数返回对象:
const mapDispatchToProps = (dispatch) => {
return({
someFunc: (arg) => {dispatch(someFunc(arg))}
})
}
我的问题是,如果我的所有操作都使用thunk
,这意味着它们都可以访问dispatch
,为什么我需要使用上面的示例来将函数映射到我的容器中的道具
经过实验,我找到了另一种似乎有效的方法,但我不确定这是否是最佳实践
Main.jsx
import * as mainActions from '../actions/mainActions'
import * as menuActions from '../actions/menuActions'
const actionsToMap = {...mainActions, ...menuActions}
export default connect(mapStateToProps, actionsToMap)(Main)
这种方法有什么问题吗 这两种方法都是正确的,当您希望将一些动作创建者传递给不知道Redux的组件,并且不希望将dispatch或Redux store传递给该组件时,也可以使用这两种方法。从技术上讲,这是它的唯一用例
从、mapDispatchToProps
中提取它可以是函数或对象
我认为您的第一种方法适合于文档编制,因为您可以很容易地看到您在组件中使用的动作创建者的签名,而无需导航到动作创建者文件。除此之外,我可以在大多数情况下使用对象(您的第二种方法)
希望这有帮助 分离关注点是一个好主意,在几乎所有的应用程序中,最好使用动作创建者(第二个示例中就是这样做的),而不是使用普通对象(第一个示例中)
有几个好处:
如果它不隐藏在对象/函数中,则更易于扩展和转换
更容易测试独立的功能性操作。(您是否尝试过测试第一个示例?)
可重复使用-如果应用程序的其他部分需要发送相同的操作,会发生什么情况,您会剪切并粘贴此发送吗
现在考虑1和3,如果你在几个地方分派这个,你需要扩展?
不仅仅是我这么说,Redux文档在这里介绍了这一点:
话虽如此,他们也说简单的对象可能就足够了,但考虑到动作创建者的实际简单程度,让您的工作在几乎所有情况下都具有可扩展性可能是值得的。我想您会从中得到答案。实际上,连接的第二个参数是函数或对象