أنا أستخدم الإصدار الأخير من حزمة react-router ، المسمى react-router-dom. أريد معرفة كيفية إجراء إعادة التوجيه redirect بعد طلب POST. لقد كنت أقوم بعمل هذا الرمز ، ولكن بعد إتمام الطلب، لا يحدث شيء. راجعت الكود أكثر من مرة ومازلت لا أفهم سبب المشكلة.
هذا هو الكود الخاص بي:
importReact,{PropTypes} from 'react';import{Redirect} from 'react-router'import axios from 'axios';importAppForm from '../../components/Form';classFormPage extends React.Component{
constructor(props){
super(props);this.state ={
errors:{},
user:{
username:'',
email:'',
password:'',
confirmPassword:''}};this.handleForm =this.processForm.bind(this);this.changeUser =this.changeUser.bind(this);}
changeUser(event){const target = event.target;const field = target.name;const user =this.state.user;
user[field]= target.value;this.setState({
user.field: field
});}
async handleForm(event){
event.preventDefault();const username =this.state.user.username;const email =this.state.user.email;const password =this.state.user.password;const confirmPassword =this.state.user.confirmPassword;const formData ={ username, email, password, confirmPassword };
axios.post('/register', formData,{ headers:{'Accept':'application/json'}}).then((response)=>{this.setState({
errors:{}});// السطر التالي لا يفعل شيء<Redirect to="/"/>}).catch((error)=>{const errors = error.response.data.errors ? error.response.data.errors :{};
errors.summary = error.response.data.message;this.setState({
errors
});});}
render(){return(<><div><AppForm
onSubmit={this.handleForm}
onChange={this.changeUser}
errors={this.state.errors}
user={this.state.user}/></div></>);}}exportdefaultFormPage;
السؤال
Adam Ebrahim
أنا أستخدم الإصدار الأخير من حزمة react-router ، المسمى react-router-dom. أريد معرفة كيفية إجراء إعادة التوجيه redirect بعد طلب POST. لقد كنت أقوم بعمل هذا الرمز ، ولكن بعد إتمام الطلب، لا يحدث شيء. راجعت الكود أكثر من مرة ومازلت لا أفهم سبب المشكلة.
هذا هو الكود الخاص بي:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.