查看如何使用mapDispatchToProps的示例--大多数示例遵循以下模式,一个以dispatch作为参数返回对象的函数:
const mapDispatchToProps = (dispatch) => {
return({
someFunc: (arg) => {dispatch(someFunc(arg))}
})
}我的问题是,如果我的所有操作都使用thunk,也就是说它们都可以访问dispatch,那么为什么我需要使用上面的示例来将函数映射到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)这种方法有什么问题吗?
发布于 2017-08-10 13:03:42
这两种方法都是正确的,当您希望将一些操作创建者向下传递到一个不知道Redux的组件时,您也可以使用bindActionCreators,并且您也不希望将分派或Redux存储传递给它。从技术上讲,这是唯一的用例。
从文档中提取它,mapDispatchToProps可以是一个函数或对象。
我认为您的第一种方法对于文档是很好的,因为您可以轻松地看到您在组件中使用的动作创建者的签名,而不必导航到动作创建者文件。除此之外,在大多数情况下,我可以使用对象(您的第二种方法)。
希望这能有所帮助!
发布于 2018-11-12 11:15:38
将关注点分开是个好主意,在几乎所有的应用程序中,使用Action (这就是在第二个例子中所做的)来反对使用普通对象(就像在第一个应用程序中那样)是一个好主意。
有几个好处:
不仅仅是我这么说,Redux文档在这里涵盖了它:https://redux.js.org/recipes/reducingboilerplate#action-creators
尽管如此,他们也说普通的对象可能已经足够了,但是考虑到实际上是多么简单的动作创建者,在几乎所有的情况下,让您的工作都是可扩展的可能是值得的。
https://stackoverflow.com/questions/45607570
复制相似问题