Sometimes, we want to fix the "Cannot read property ‘push’ of undefined" error with React Router.
In this article, we’ll look at how to fix the "Cannot read property ‘push’ of undefined" error with React Router.
How to fix the "Cannot read property ‘push’ of undefined" error with React Router?
To fix the "Cannot read property ‘push’ of undefined" error with React Router, we should call the withRouter component with our route component so the history object is available in the props.
For instance, we write
import { withRouter } from "react-router";
class App extends Component {
  push = () => {
    this.props.history.push("/foo");
  };
  //...
}
export default withRouter(App);
to call withRouter with App so that App has this.props.history.push set.
Now we call this.props.history.push with '/foo' to go to /foo.
Conclusion
To fix the "Cannot read property ‘push’ of undefined" error with React Router, we should call the withRouter component with our route component so the history object is available in the props.
