J'ai tenté de rediriger lors de la connexion de l'utilisateur. La connexion fonctionne correctement avec ma base de données et rendra conditionnellement mes nouveaux liens pour mon portail d'administration. J'essayais d'utiliser Redirection après avoir obtenu un code de statut 200, mais je ne suis pas sûr que ce soit même le bon moyen.
article axios pour le composant de connexion:
const handleSubmit = e => { e.preventDefault(); console.log(adminLogin) axios .post("/api/Authentication", adminLogin) .then(function(response) { if (response.status === 200) { setIsLoggedIn(true); <Redirect to="/inventory" /> } setAdminLogin(response.data); console.log(response); }) .catch(function(error) { console.log(error); });
p >
3 Réponses :
Vous ne pouvez pas rediriger directement depuis la fonction. Si vous souhaitez rediriger depuis la fonction, vous pouvez utiliser this.props.history.push('/inventory');
Et une autre façon de rediriger en utilisant state.
const[login,setIsLoggedIn]=useState(false) if (response.status === 200) { setIsLoggedIn(true); } if(login){ return <Redirect to='/inventory'/> } return( //Main function return );
si vous utilisez react-router-dom, vous pouvez voir cet exemple dans la documentation et vous pouvez voir une question similaire dans ici
Comme il s'agit d'un appel axios, il est toujours recommandé d'utiliser this.props.history.push ().
Assurez-vous que lorsque vous utilisez cette fonction, vous avez déjà utilisé withRouter pour router votre composant.
import React, { Component } from 'react'; import { withRouter } from 'react-router-dom'; import axios from 'axios'; class App extends Component { ... const handleSubmit = e => { e.preventDefault(); console.log(adminLogin) axios .post("/api/Authentication", adminLogin) .then(function(response) { if (response.status === 200) { setIsLoggedIn(true); this.props.history.push('/inventory'); } setAdminLogin(response.data); console.log(response); }) .catch(function(error) { console.log(error); }); } ... } export default withRouter(App);
Si vous n'emballez pas votre composant avec withRouter, l'objet historique ne sera pas présent dans this.props et, par conséquent, générera une erreur.