Javascript 在React的父函数中未调用Set State
我在我的组件类中定义了一个函数,在使用子组件的地方调用它的父函数Javascript 在React的父函数中未调用Set State,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我在我的组件类中定义了一个函数,在使用子组件的地方调用它的父函数 completeSession(id) { this.props.completeSession(id); } 此函数调用id为的父函数。父函数为: completeSession(id) { console.log("Entered parent complete Session"); console.log(id); this.setState({feedback_id: id}); console.lo
completeSession(id) {
this.props.completeSession(id);
}
此函数调用id为的父函数。父函数为:
completeSession(id) {
console.log("Entered parent complete Session");
console.log(id);
this.setState({feedback_id: id});
console.log(this.state.feedback_id);
}
如您所见,我有3个控制台日志
,我的控制台.log(id)
给出了一个正确的值,但是这个.state.feedback\u id
没有定义。在这里,this.setState
应该更新反馈id,这也应该更新子组件
renderPast() {
return(
<PastSessions timezone={this.state.timezone}
feedback_id={this.state.feedback_id}
sessions={this.state.sessions}
completeSession={this.completeSession.bind(this)}
cancelSession={this.cancelSession.bind(this)} />
)
}
renderPast(){
返回(
)
}
因此,我将
反馈id
传递回组件,因此我不确定它为什么没有按预期设置状态。任何帮助都将不胜感激。请记住,setState
是异步的,因此状态在调用后不会立即更新。您可以提供一个回调函数作为setState
第二个参数,当状态实际更新时将调用该参数:
this.setState({feedback_id: id}, () => {
console.log('state updated');
console.log(this.state.feedback_id);
});
根据React文件:
。。。第二个参数是一个可选的回调函数,它将
完成设置状态并重新渲染组件后执行。
通常,我们建议对此类逻辑使用componentDidUpdate()
相反
setState()不会立即改变this.state,但会创建
等待状态转换。调用此命令后访问this.state
方法可能返回现有值