我有一个父组件,我在其中使用 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
也不会返回任何内容。
您需要执行类似此处答案的操作:React setState callback return value
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);
});
}
}
);
)};
关于javascript - 从 setState 回调返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164979/