Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React的父函数中未调用Set State_Javascript_Reactjs_React Router - Fatal编程技术网

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 方法可能返回现有值