Ich verwende das React-Router-Modul der letzten Version mit dem Namen React-Router-Dom, das bei der Entwicklung von Webanwendungen mit React zum Standard geworden ist. Ich möchte wissen, wie man nach einer POST-Anfrage eine Umleitung durchführt. Ich habe diesen Code erstellt, aber nach der Anfrage passiert nichts. Ich überprüfe im Internet, aber alle Daten beziehen sich auf frühere Versionen des Reaktionsrouters und nicht auf das letzte Update.
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="https://stackoverflow.com/"/> // 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;
Dein
Redirect
sieht aus wie JSX, nicht JS.– Elmeister
5. April 2017 um 11:50 Uhr
können Sie den gesamten Komponentencode bereitstellen
– KornholioBeavis
5. April 2017 um 11:54 Uhr
Ja, ich verwende JSX. Nun, vielleicht muss ich das klarstellen. Die POST-Anfrage befindet sich innerhalb einer REACT-Komponente, die die Anfrage stellt.
– maoooricio
5. April 2017 um 11:55 Uhr
@KornholioBeavis, sicher, jetzt können Sie vollständig sehen. Ich mache den Server mit expressjs, ich weiß nicht, ob Sie diese Daten benötigen
– maoooricio
5. April 2017 um 12:00 Uhr
Können Sie bestätigen, dass Sie eine Rückrufantwort von axios.post erhalten? Warum verwenden Sie auch die asynchrone Funktion, ohne irgendwo zu warten?
– KornholioBeavis
5. April 2017 um 12:07 Uhr