I using react-router
in my application.
In my login page, I needing authentication with ajax
and redirect if success.
Some like following code:
class PageLogin extends React.Component {
login() {
// How to can I redirect to another page if auth success?
}
render() {
return (
<div className="login-page">
<form action="">
<div className="form-group">
<label>Username:</label>
<input type="text"/>
</div>
<div className="form-group">
<label>Password:</label>
<input type="text"/>
</div>
<div>
<button onClick={this.login}>Login</button>
</div>
</form>
</div>
)
}
}
In my login
function, how to can I redirect to another page if authentication success?
To redirect to another page on button click in React: Use the useNavigate() hook, e.g. const navigate = useNavigate(); . Call the navigate() function, passing it the path - navigate('/about') . The navigate() function lets us navigate programmatically.
The Redirect component was usually used in previous versions of the react-router-dom package to quickly do redirects by simply importing the component from react-router-dom and then making use of the component by providing the to prop, passing the page you desire to redirect to.
Every Website needs a 404 page if the URL does not exist or the URL might have been changed. To set up a 404 page in the angular routing, we have to first create a component to display whenever a 404 error occurred.
Two ways to handle redirecting on a user event such as create, update and delete with React Router.
Context is the best option, however official documentation tells that you can also use withRouter
to put router
prop to your component that would correctly perform history state transition:
import { withRouter } from 'react-router';
class PageLogin extends React.Component {
login() {
this.props.history.push('/some/location'); // for react-router@3 it would be this.props.router.push('/some/location');
}
render() {
return (
<div className="login-page">
<form action="">
<div className="form-group">
<label>Username:</label>
<input type="text"/>
</div>
<div className="form-group">
<label>Password:</label>
<input type="text"/>
</div>
<div>
<button onClick={this.login}>Login</button>
</div>
</form>
</div>
)
}
}
export default withRouter(PageLogin);
You'll have a reference to the Router in context. You can simply call router.push
with your new path to redirect.
class PageLogin extends React.Component {
login() {
this.context.router.push('/newPath');
}
...
}
PageLogin.contextTypes = {
router: React.PropTypes.object
}
If you don't want to push a route to their history, but instead replace their current route, you can call replace
instead. The API is identical to push
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With