Config Router

  • Google Sheets
  • CCNA Online training
    • CCNA
  • CISCO Lab Guides
    • CCNA Security Lab Manual With Solutions
    • CCNP Route Lab Manual with Solutions
    • CCNP Switch Lab Manual with Solutions
  • Juniper
  • Linux
  • DevOps Tutorials
  • Python Array
You are here: Home / How to do a redirect to another route with react-router?

How to do a redirect to another route with react-router?

August 16, 2021 by James Palmer

1) react-router > V5 useHistory hook:
If you have React >= 16.8 and functional components you can use the useHistory hook from react-router.
import React from ‘react’;
import { useHistory } from ‘react-router-dom’;

const YourComponent = () => {
const history = useHistory();

const handleClick = () => {
history.push(“/path/to/push”);
}

return (

);
}

export default YourComponent;

2) react-router > V4 withRouter HOC:
As @ambar mentioned in the comments, React-router has changed their code base since their V4. Here are the documentations – official, withRouter
import React, { Component } from ‘react’;
import { withRouter } from “react-router-dom”;

class YourComponent extends Component {
handleClick = () => {
this.props.history.push(“path/to/push”);
}

render() {
return (

);
};
}

export default withRouter(YourComponent);

3) React-router < V4 with browserHistory You can achieve this functionality using react-router BrowserHistory. Code below: import React, { Component } from 'react'; import { browserHistory } from 'react-router'; export default class YourComponent extends Component { handleClick = () => {
browserHistory.push(‘/login’);
};

render() {
return (

);
};
}

4) Redux connected-react-router
If you have connected your component with redux, and have configured connected-react-router all you have to do is
this.props.history.push(“/new/url”); ie, you don’t need withRouter HOC to inject history to the component props.
// reducers.js
import { combineReducers } from ‘redux’;
import { connectRouter } from ‘connected-react-router’;

export default (history) => combineReducers({
router: connectRouter(history),
… // rest of your reducers
});

// configureStore.js
import { createBrowserHistory } from ‘history’;
import { applyMiddleware, compose, createStore } from ‘redux’;
import { routerMiddleware } from ‘connected-react-router’;
import createRootReducer from ‘./reducers’;
…
export const history = createBrowserHistory();

export default function configureStore(preloadedState) {
const store = createStore(
createRootReducer(history), // root reducer with router state
preloadedState,
compose(
applyMiddleware(
routerMiddleware(history), // for dispatching history actions
// … other middlewares …
),
),
);

return store;
}

// set up other redux requirements like for eg. in index.js
import { Provider } from ‘react-redux’;
import { Route, Switch } from ‘react-router’;
import { ConnectedRouter } from ‘connected-react-router’;
import configureStore, { history } from ‘./configureStore’;
…
const store = configureStore(/* provide initial state if any */)

ReactDOM.render(


<> { /* your usual react-router v4/v5 routing */ }





,
document.getElementById(‘root’)
);

// YourComponent.js
import React, { Component } from ‘react’;
import { connect } from ‘react-redux’;
…

class YourComponent extends Component {
handleClick = () => {
this.props.history.push(“path/to/push”);
}

render() {
return (

);
}
};

}

export default connect(mapStateToProps = {}, mapDispatchToProps = {})(YourComponent);

For the simple answer, you can use Link component from react-router, instead of button. There is ways to change the route in JS, but seems you don’t need that here.

Click to login

To do it programmatically in 1.0.x, you do like this, inside your clickHandler function:
this.history.pushState(null, ‘login’);
Taken from upgrade doc here
You should have this.history placed on your route handler component by react-router. If it child component beneath that mentioned in routes definition, you may need pass that down further

Related

Filed Under: Uncategorized

Recent Posts

  • How do I give user access to Jenkins?
  • What is docker volume command?
  • What is the date format in Unix?
  • What is the difference between ARG and ENV Docker?
  • What is rsync command Linux?
  • How to Add Music to Snapchat 2021 Android? | How to Search, Add, Share Songs on Snapchat Story?
  • How to Enable Snapchat Notifications for Android & iPhone? | Steps to Turn on Snapchat Bitmoji Notification
  • Easy Methods to Fix Snapchat Camera Not Working Black Screen Issue | Reasons & Troubleshooting Tips to Solve Snapchat Camera Problems
  • Detailed Procedure for How to Update Snapchat on iOS 14 for Free
  • What is Snapchat Spotlight Feature? How to Make a Spotlight on Snapchat?
  • Snapchat Hack Tutorial 2021: Can I hack a Snapchat Account without them knowing?

Copyright © 2025 · News Pro Theme on Genesis Framework · WordPress · Log in