Javascript 将数据从子级传递到父级,React.js

Javascript 将数据从子级传递到父级,React.js,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我试图将数据从子组件传递到父组件。但是,在执行此操作时,我得到一个错误: 警告:setState(…):无法在现有状态转换期间更新(例如在渲染或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到componentWillMount 我不明白,因为当我对事件处理程序使用相同的模式时,一切都很好。如何才能成功地将数据从子组件传递到父组件,而不出现错误 const Child=(道具)=>{ let message='嗨,妈妈' props.call

我试图将数据从子组件传递到父组件。但是,在执行此操作时,我得到一个错误:

警告:setState(…):无法在现有状态转换期间更新(例如在渲染或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到componentWillMount

我不明白,因为当我对事件处理程序使用相同的模式时,一切都很好。如何才能成功地将数据从子组件传递到父组件,而不出现错误

const Child=(道具)=>{
let message='嗨,妈妈'
props.callBackFromParent(消息);
返回{props.message}
};
类父类扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
messageFromChild:“”,
}
this.callBackFromParent=this.callBackFromParent.bind(this);
}
callBackFromParent(dataFromChild){
this.setState({messageFromChild:dataFromChild})
}
render(){
返回(
来自孩子的信息是:
)
}
}
ReactDOM.render(
,
document.getElementById('root'))
);

在渲染期间不允许调用
setState
,调用
props.callBackFromParent
会导致这种情况

您可以将该函数用作事件处理程序,它将按预期设置父级的状态

示例

const Child = (props) => {
  let message = 'Hi mom';

  return <h3 onClick={() => props.callBackFromParent(message)}>{props.message}</h3>
};
const Child=(道具)=>{
let message='嗨,妈妈';
返回props.callBackFromParent(message)}>{props.message}
};

不要粗鲁,但你的问题有点漏洞百出;这就像问为什么在街上开车可以,但在人行道上开车不可以。将组件定义为函数意味着该函数就是
render
函数。React是基于事件的,
render
不应该更改状态,这正是它的设计方式。详细说明:React调用
render()
状态更改时,因此如果render调用导致状态更改,您将有一个无限循环。