DEV Community

Cover image for Programmatic Navigation in React using react-router

Programmatic Navigation in React using react-router

Aniket on November 28, 2019

I have seen my fair share of react tutorials, but any time that they talk about navigation using react-router, they only show the way using the Lin...
Collapse
 
rusikf profile image
Ruslan Korolev

The last way - add utils/history, add this to BrowserRouter + trying to use this constant in redux action doesnt work. It changes url, but react-router don't render component
Looks, the problem because we create 2 instances of createHistory, Details - github.com/ReactTraining/react-rou...

Other ways works, thanks for article!

Collapse
 
projectescape profile image
Aniket

Glad you liked it. But you sure the last way is not working? I'm positive it was working when I wrote this post, I also linked my repo which has the code I wrote back then. I have used Router instead of BrowserRouter, as BrowserRouter comes with its own history

Collapse
 
rusikf profile image
Ruslan Korolev

Amazing, it works when I tried to use Router! Thanks a lot !!

Collapse
 
jeffreywarner283 profile image
Jeffrey Warner • Edited

Programmatic navigation is useful for implementing complex navigation logic, such as redirecting users after form submissions, implementing multi-step forms, or navigating based on authentication status.

chimney repair

Collapse
 
wintercounter profile image
Victor Vincent • Edited

The article completely misses the hooks way (useRouter).

You should stick to the declerative way whenever you can. I think the article should endorse this to be complete.

Collapse
 
dance2die profile image
Sung M. Kim
  1. You should not redirect from a Redux action. Actions should not have side-effects.

Would checking for a Redux state and redirect on state change/value be a good way?

Collapse
 
wintercounter profile image
Victor Vincent

I updated my comment as it was bs :) For some reason I had reducers in my mind all along.

Collapse
 
kustomdesigner profile image
Michael Hicks

Any negative effects from redirecting using local state?

Collapse
 
projectescape profile image
Aniket

Thanks for the comment.
I'll try to update the article as soon as I can.

Collapse
 
projectescape profile image
Aniket • Edited

I've updated the post, would really appreciate if you check it out!

Collapse
 
wintercounter profile image
Victor Vincent

Good job!

Collapse
 
avxkim profile image
Alexander Kim

So, react-router team is preferring <Redirect to="/asd/" /> component over imperative style history.push('/asd'). But, sometimes is just easier to use history.push() instead of rendering a redirect component. What's your thoughts?

Collapse
 
projectescape profile image
Aniket • Edited

I think it's the same as using hooks and functional components over class based components.
Although it's recommended, it's better to just stick to whatever you and your team is more comfortable with and what makes more sense to you.
In the end writing code that actually works and which you can easily understand later to further iterate is more important.

Collapse
 
shamxeed profile image
Musa Danjuma

Hi thanks for taking the time to post this but please I'm having an issue. I tried the first approach as recommended by you but the component I'm redirecting to is not displaying but the path in the URL will change. Any idea on how to fix that, please?

Note: If I redirect to the homepage it will work but to other paths is not.

Collapse
 
memojtabazamani profile image
mojtaba zamani

Hi, maybe the problem is that you correctly or incorrectly, for example, entered the wrong address when importing, did not specify the wrong name and .. "Component" for
I mean:

I hope I helped.

Collapse
 
itsrakesh profile image
Rakesh Potnuru

Redirect is removed in v6 - v6.0.0-alpha.3

Collapse
 
alsmith808 profile image
Alan Smith

Thank you, useHistory() works great for me, so simple, brilliant!!

Collapse
 
kustomdesigner profile image
Michael Hicks

Thank you, useHistory Hook was exactly what I needed.

Collapse
 
blind2k profile image
Blind2k

I like what you wrote here.
Good job.

Collapse
 
josesimancas51 profile image
José Simancas

Exelent bro, this helped me!

Collapse
 
therocketguy profile image
TheRocketGuy

I like what you wrote here.
Great job. Check us out Telegram Crypto Groups

Collapse
 
xsm78167 profile image
xsm78167