A standard way to navigate with
react-router besides using
the Link
component is to call history.push
. Components that are directly
rendered by a Route
will have access to this and other router props. But
what about other components?
The withRouter
HOC gives us direct access to a history
prop.
import React from 'react';
import { withRouter } from 'react-router';
const SpecialButton = withRouter(({ history, path, text }) => {
return (
<Button
onClick={() => { history.push(path); }}
>
{text}
</Button>
)
});
This special button component is given the history
prop via the
withRouter
HOC along with any props that we directly pass it. With that
we are able to directly invoke a route change using history.push()
.