J'utilise la dernière version du module react-router, nommé react-router-dom, qui est devenu le module par défaut lors du développement d'applications web avec React. Je veux savoir comment faire une redirection après une requête POST. J'ai fait ce code, mais après la requête, rien ne se passe. Je passe en revue sur le web, mais toutes les données sont sur les versions précédentes du react router, et pas avec la dernière mise à jour.
Code :
import React, { PropTypes } from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import { Redirect } from 'react-router'
import SignUpForm from '../../register/components/SignUpForm';
import styles from './PagesStyles.css';
import axios from 'axios';
import Footer from '../../shared/components/Footer';
class SignUpPage extends React.Component {
constructor(props) {
super(props);
this.state = {
errors: {},
client: {
userclient: '',
clientname: '',
clientbusinessname: '',
password: '',
confirmPassword: ''
}
};
this.processForm = this.processForm.bind(this);
this.changeClient = this.changeClient.bind(this);
}
changeClient(event) {
const field = event.target.name;
const client = this.state.client;
client[field] = event.target.value;
this.setState({
client
});
}
async processForm(event) {
event.preventDefault();
const userclient = this.state.client.userclient;
const clientname = this.state.client.clientname;
const clientbusinessname = this.state.client.clientbusinessname;
const password = this.state.client.password;
const confirmPassword = this.state.client.confirmPassword;
const formData = { userclient, clientname, clientbusinessname, password, confirmPassword };
axios.post('/signup', formData, { headers: {'Accept': 'application/json'} })
.then((response) => {
this.setState({
errors: {}
});
<Redirect to="/"/> // Here, nothings happens
}).catch((error) => {
const errors = error.response.data.errors ? error.response.data.errors : {};
errors.summary = error.response.data.message;
this.setState({
errors
});
});
}
render() {
return (
<div className={styles.section}>
<div className={styles.container}>
<img src={require('./images/lisa_principal_bg.png')} className={styles.fullImageBackground} />
<SignUpForm
onSubmit={this.processForm}
onChange={this.changeClient}
errors={this.state.errors}
client={this.state.client}
/>
<Footer />
</div>
</div>
);
}
}
export default SignUpPage;
1 votes
Votre
Redirect
ressemble à JSX, pas à JS.0 votes
Pouvez-vous fournir le code complet du composant
0 votes
Oui, j'utilise JSX. Je dois peut-être préciser. La demande POST est à l'intérieur d'un composant REACT qui fait la demande.
0 votes
@KornholioBeavis, bien sûr, maintenant vous pouvez voir complet. Je fais le serveur avec expressjs, je ne sais pas si vous avez besoin de ces données.
0 votes
Pouvez-vous valider que vous obtenez une réponse de callback de axios.post ? Aussi, pourquoi utilisez-vous la fonction asynchrone sans await nulle part ?
0 votes
@KornholioBeavis, vous avez raison, j'ai omis de supprimer le mot "async", car je l'utilisais pour recevoir le callback d'axios dans une variable, mais je n'en ai plus besoin. Oui, je reçois la réponse que j'attends, et la réponse a le statut OK (200).