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
Javascript 父重渲染器不';更新儿童道具_Javascript_Reactjs - Fatal编程技术网

Javascript 父重渲染器不';更新儿童道具

Javascript 父重渲染器不';更新儿童道具,javascript,reactjs,Javascript,Reactjs,我有一个父组件和一个子组件。在父组件中,我定义了作为道具传递给子组件的状态。我还在子组件的props中传递函数“onUpdateQuestion”。每次子对象的输入字段的值更改时,都将执行此函数(因此将发生重新渲染) 导出默认类父级扩展React.PureComponent{ 公共国家={ 问题:新问题() }; public onUpdateQuestion=():void=>{ 让_question=this.state.question; this.setState({问题:_问题});

我有一个父组件和一个子组件。在父组件中,我定义了作为道具传递给子组件的状态。我还在子组件的props中传递函数“onUpdateQuestion”。每次子对象的输入字段的值更改时,都将执行此函数(因此将发生重新渲染)

导出默认类父级扩展React.PureComponent{
公共国家={
问题:新问题()
};
public onUpdateQuestion=():void=>{
让_question=this.state.question;
this.setState({问题:_问题});
};
public render():React.ReactNode{
返回(
);
}
}
类QuestionEditorChild扩展React.Component{
render(){
log(this.props.question.description);
返回(
问题:
{
this.props.question.setDescription(如target.value);
this.props.onUpdate问题();
}}
/>
);
}
}
课堂提问实现了课堂评价{
公共描述:字符串;
构造函数(问题?:IQuestion){}
public setDescription(值:字符串):void{
这个。描述=值;
}
}
界面测试{
描述:字符串;
}
我的子组件再也不会重新渲染。这是否与我在子组件中执行的函数setDescription()有关

在使用模型/接口时,正确重新呈现子对象的最佳实践是什么

public onUpdateQuestion = (): void => {
    let _question = this.state.question; 
    this.setState({ question: _question });
};
上面的代码实际上没有使用表单中的任何新数据

应该是

onUpdateQuestion = (incomingData) => {
    this.setState({ question: incomingData })
}
因此,从技术上讲,您的代码(从不更新)是正确的,因为它总是使用新的
Question()
,它只创建一次,然后从不更改。

有一篇文章是由React开发人员编写的。
onUpdateQuestion = (incomingData) => {
    this.setState({ question: incomingData })
}