Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically navigate using react router [duplicate]

When using react-router I can use the Link element to create links that are natively handled by react router.

I see internally it calls this.context.transitionTo(...).

I want to do a navigation, but not from a link, from a dropdown selection for example. How can I do this in code? What is this.context?

I saw the Navigation mixin, but can I do this without mixin's?

like image 927
Ben Johnson Avatar asked Oct 24 '25 23:10

Ben Johnson


1 Answers

You want to install the history package npm install history and then pass an instance of it to your router:

import { Router } from "react-router";
import { createBrowserHistory } from "history";

const history = createBrowserHistory()

<Router history={history}>
  <App/>
</Router>

Then you can programmatically navigate anywhere in your app by using withRouter to get your history instance and doing something like this history.push("/my-path").

You can also set up a file that creates/exports your history instance that you can just import.

Technically you don't need the history package as react-router will pass its own, but if you're doing this you'll prefer the flexibility that your own history instance will provide.

like image 50
Chase Avatar answered Oct 26 '25 12:10

Chase