Javascript 从setState回调返回
我有一个父组件,我使用Javascript 从setState回调返回,javascript,reactjs,Javascript,Reactjs,我有一个父组件,我使用refs调用子组件中的函数 子组件函数具有this.setState和this.setState中的回调函数 handleSaveProject = async () => { this.setState({ //set some state }, () => { if(this.state.isValid){ let project = this.initi
refs
调用子组件中的函数
子组件函数具有this.setState
和this.setState
中的回调函数
handleSaveProject = async () => {
this.setState({
//set some state
}, () => {
if(this.state.isValid){
let project = this.initializeProject();
return ProjectAPI.saveProject(project).then((response) => {
console.log(response); //ok
return response;
});
}
}
);
}
这个很好用。现在,我使用参照从父组件调用
handleSaveClick = () => {
if(createProjectComponentRef.current){
createProjectComponentRef.current.handleSaveProject().then((saveResponse) => {
console.log(saveResponse); //undefined
if(saveResponse && saveResponse.status === 200){
this.handleDialog();
ProjectAPI.getProjects().then((response) => {
this.setState({projects: response})
});
}
});
}
}
我可以调用子组件函数,但在父组件中得到的响应(返回值)未定义。有什么帮助吗?
handleSaveProject
实际上没有返回任何内容,我认为setState
也不会返回任何内容
你需要做一些类似于这里答案的事情:
return new Promise(resolve => {
this.setState({
//set some state
}, () => {
if(this.state.isValid){
let project = this.initializeProject();
return ProjectAPI.saveProject(project).then((response) => {
console.log(response); //ok
resolve(response);
});
}
}
);
)};