如何在redux中的mapDispatchToProps中访问全局状态?

rob*_*rob 2 javascript redux redux-thunk

我想发送一个操作来使用当前登录的用户更新我的应用程序的全局状态.当用户单击一个按钮时,会触发一个事件处理程序mapDispatchToProps,然后我会调度一个action(article.updateAuthor(currentUser)).但是,mapDispatchToProps我无法访问状态以获取当前用户,并且我不想随意将当前已登录的用户传递给组件道具 - 仅传递给上面的click事件,然后传递给用户数据到已分派的操作.

我知道我可以用redux thunk发送一个动作,让我可以访问状态.然而,由于没有进行API调用,因此看起来相当沉重.

有没有人遇到过这个问题?

KA0*_*A01 6

在您connect提供的函数中,react-redux您可以使用四个可选参数:

  • mapStateToProps
  • mapDispatchToProps
  • mergeProps (这个会给你你想要的)
  • options

从以下文档mergeProps:

如果指定,则传递mapStateToProps(),mapDispatchToProps()和父道具的结果.从它返回的普通对象将作为props传递给包装组件.您可以指定此函数以根据props选择状态切片,或将动作创建者绑定到props中的特定变量

因此,在您的情况下,您将使用mapStateToProps访问所需的全局状态的任何部分.结果将mergeProps作为stateProps参数传递给.

mergeProps执行此状态所需的操作时,请使用dispatchProps(或dispatch从中进行结构化)的结果并在要连接的组件中返回所需的对象.