如何从history访问mapDispatchToProps道具

import { withRouter } from "react-router-native";

const mapDispatchToProps = (dispatch, ownProps) => ({
   doSomething: () => ownProps.history.goBack() // history is undefined ...??
})

export default withRouter(connect(undefined, mapDispatchToProps)(MyComponent))


docs说得更清楚如何从react-router connect方法中访问mapDispatchToProps上下文道具。


  如果您的mapDispatchToProps函数声明为带有两个参数,则将以dispatch作为第一个参数,并将传递给连接组件的props作为第二个参数来调用它,


更新:

这是react-routerdocs关于此内容的内容


  在大多数情况下,您可以使用链接,导航链接和重定向来执行导航操作。有时,在某些最初由操作启动的异步任务之后,您可能还需要以编程方式导航。例如,您可以在用户提交登录表单时调度操作。然后,您的thunk,saga或其他异步处理程序对凭据进行身份验证,如果成功,则需要以某种方式导航到新页面。此处的解决方案只是将历史对象(提供给所有路由组件)包括在操作的有效负载中,并且异步处理程序可以在适当的时候使用它来进行导航。


显然,在连接的组件内部不存在对外部上下文的支持,因此需要找到适当的整洁方法。

最佳答案

下面是实现此目的的另一种方法,但请先使用console.log检查道具中是否存在历史记录。

const mapDispatchToProps = (dispatch, ownProps) => ({
 doSomething: (history) => history.goBack() // history is undefined ...??
})


这样的事情你可以做...

10-07 23:20