connect and withRouter issue

Viewed 27003

I am using Redux and React for my project. I have some Routes in App.js. I also use the connect function in react-redux in my project. To prevent update blocking issue, I usually wrapped my component in this way

withRouter(connect(mapStateToProps, mapDispatchToProps)(App)),

However, If I changed order of withRouter and connect it doesn't work:

connect(mapStateToProps, mapDispatchToProps)(withRouter(App))

I have console.log the props in App.js. It already receives location and history props. I am figuring out the theory behind why the order does matter ?

4 Answers

You can use it with the method compose from redux library.

export default compose(
  withRouter,
  connect(mapStateToProps, mapDispatchToProps)
)(App);

You can do it in two ways,

Proper Way:

withRouter(connect(mapStateToProps, mapDispatchToAction)(App));

with this, you will able to get withRouter props like history, match etc.. in mapStateToProps.

2nd way:

connect(mapStateToProps, mapDispatchToAction)(withRouter(App));

using this, you won't be able to get the withRouter props

If someone still has the issue then plz follow this one

const ShowTheLocationWithRouter = withRouter(Login);

export default connect(mapStateToProps, mapDispatchToProps)(ShowTheLocationWithRouter);
Related