【发布时间】:2021-06-14 15:10:44
【问题描述】:
setState配合回调函数使用时,如何在父组件中调用子组件的函数?
背景资料
一个简单的测验应用程序的三个组成部分:
App.jsx
-- Questions.jsx
-- Results.jsx
要访问结果组件和问题组件中的答案,答案必须保存在应用组件的状态中。
要修改应用组件的状态,每次用户回答问题时,我都需要调用一个从应用组件向下传递到问题组件的函数。设置好app组件的State后,应该会显示下一个问题。因此,应该调用问题组件中的函数nextQuestion()。通常,我只会写setState({results: results}, nextQuestion()),但由于nextQuestion() 是问题组件而不是应用程序组件的功能,所以这不起作用。
我该如何解决这个问题?
非常感谢!
在问题组件中:
checkAnswer = (answer) => {
if (answer !== this.state.solution) {
let s = this.state;
this.props.saveResult(s.question, s.solution[0], answer);
//[...]
}
};
newQuestion = () => {
//[...]
let question = [...this.state.question];
let solution = [...this.state.solution];
const task = taskGenerator.taskDirectory[taskId](); //generate new question + solution
question = task.question;
solution = task.solution;
this.setState({ question, solution });
};
在应用组件中:
saveResult = (question, solution, answer) => {
let results = cloneDeep(this.state.results)
results.question = question
results.solution = solution
results.answer = answer
this.setState({ results: results }, newQuestion()); //here is the problem; how do I call the newQuestion function of the child component?
};
【问题讨论】:
-
你有一些我可以看的代码示例吗?
标签: javascript reactjs callback setstate