Reactjs 更新而不刷新页面

Reactjs 更新而不刷新页面,reactjs,Reactjs,所以我在Heroku上部署了我的应用程序,我有下面的url。每当我更新数据时,我的数据不会自动更新,我通常必须刷新页面,或者我必须更新两次才能显示新数据。下面是我的应用程序的url和我的更新代码 import React,{Component}来自'React'; 导入“/App.css”; 从“axios”导入axios; 导出默认类EditStudent扩展组件{ 建造师(道具){ 超级(道具) this.ChangeID=this.ChangeID.bind(this); this.Ch

所以我在Heroku上部署了我的应用程序,我有下面的url。每当我更新数据时,我的数据不会自动更新,我通常必须刷新页面,或者我必须更新两次才能显示新数据。下面是我的应用程序的url和我的更新代码

import React,{Component}来自'React';
导入“/App.css”;
从“axios”导入axios;
导出默认类EditStudent扩展组件{
建造师(道具){
超级(道具)
this.ChangeID=this.ChangeID.bind(this);
this.ChangeRoleNumber=this.ChangeRoleNumber.bind(this);
this.ChangeFirstName=this.ChangeFirstName.bind(this);
this.ChangeLastName=this.ChangeLastName.bind(this);
this.ChangeMarks=this.ChangeMarks.bind(this);
this.Enter=this.Enter.bind(this);
此.state={
_id:“”,
角色编号:“”,
名字:'',
姓氏:“”,
标记:“”
}
}
componentDidMount(){
/*
axios.get()http://localhost:3200/students/student_info/“+this.props.match.params.id)
。然后(res=>{
这是我的国家({
_id:res.data.\u id,
role_num:res.data.role_num,
first_name:res.data.first_name,
姓氏:res.data.last_name,
标记:res.data.marks
});
})
.catch(错误=>{
控制台日志(err);
})
*/
axios.get(“https://crud-backend.herokuapp.com/students")
。然后((myJson)=>{
this.setState({student:myJson.data});
})
.catch(error=>console.error(error));
const student=this.props.location.state;
console.log('=>Student to edit',Student);
常数{
_id,role_num,
名字,
姓,马克,
}=学生;
this.setState({u id,role_num,first_name,last_name,marks});
}
变更ID(a){
这是我的国家({
_id:a.target.value
})
}
ChangeRoleNumber(a){
这是我的国家({
角色编号:a.target.value
})
}
更改名字(a){
这是我的国家({
名字:a.target.value
})
}
更改姓氏(a){
这是我的国家({
姓氏:a.target.value
})
}
更改标记(a){
这是我的国家({
标记:a.target.value
})
}
输入(a){
a、 预防默认值();
常数myobj={
_id:这个州,
role_num:this.state.role_num,
名字:this.state.first_name,
姓氏:this.state.last_name,
马克:这个。州。马克
};
轴心柱https://crud-backend.herokuapp.com/students/updateStudent’,myobj)
。然后(res=>console.log(res.data));
this.props.history.push('/getstudents');
}
render(){
console.log('Student in state===>',this.state);
返回(
更新学生
输入ID:
输入角色编号:
输入名字:
输入姓氏:
输入标记:
)
}
}

所以我以前已经测试过这个方法,它在没有页面刷新的情况下进行更新。但是由于某些原因,我不知道为什么它不再工作。

有两种方法可以让应用程序显示更新的值

1) 您可以让POST返回一个更新的值数组,您可以使用这些值更新应用程序状态,而无需发出另一个HTTP请求

2) 一旦POST请求成功,您可以向BE发出第二个请求以获取数据

axios.post('https://crud-backend.herokuapp.com/students/updateStudent', myobj)

.then(res=> console.log(res.data));
  // update state here by making a call to the BE to get the updated student vallues. 
   axios.get( "https://crud-backend.herokuapp.com/students")
    .then((myJson) => {
      this.setState({student:myJson.data});
     })
    .catch(error => console.error(error));
   }

有两种方法可以让应用程序显示更新的值

1) 您可以让POST返回一个更新的值数组,您可以使用这些值更新应用程序状态,而无需发出另一个HTTP请求

2) 一旦POST请求成功,您可以向BE发出第二个请求以获取数据

axios.post('https://crud-backend.herokuapp.com/students/updateStudent', myobj)

.then(res=> console.log(res.data));
  // update state here by making a call to the BE to get the updated student vallues. 
   axios.get( "https://crud-backend.herokuapp.com/students")
    .then((myJson) => {
      this.setState({student:myJson.data});
     })
    .catch(error => console.error(error));
   }