Reactjs React将未安装的组件添加到阵列
我正在尝试创建多个组件以供将来渲染,将tham添加到阵列中,如下所示:Reactjs React将未安装的组件添加到阵列,reactjs,Reactjs,我正在尝试创建多个组件以供将来渲染,将tham添加到阵列中,如下所示: widgets.push(<TextWidget fieldData={fieldData} correctionFactor={correctionFactor} />); 如果我做smth喜欢this.state.FieldData=props.FieldData
widgets.push(<TextWidget fieldData={fieldData} correctionFactor={correctionFactor} />);
如果我做smth喜欢
this.state.FieldData=props.FieldData然后react在构造函数中抱怨无法设置未安装组件的状态。我认为您忘记了在构造函数中调用super()
super(props);
根据报告:
你应该在任何其他声明之前调用super(props)。否则,this.props将在构造函数中未定义,这可能会导致错误
我想您忘记了在构造函数中调用super()
作为第一行
super(props);
根据报告:
你应该在任何其他声明之前调用super(props)。否则,this.props将在构造函数中未定义,这可能会导致错误
你犯了两个错误
- 首先:在操作道具之前,您应该调用
super(props)
,然后使用this.props.FieldData
,您甚至可以在定义状态时在构造函数()中这样做,如:
constructor(props) {
super(props);
this.state = {
FieldData: this.props.FieldData,
CorrectionFactor: this.props.CorrectionFactor || 1
};
}
- 第二:您不应该像以前那样设置状态:
this.state.FieldData = this.FieldData;
您应该使用this.setState()
(读取),如下所示:
this.setState({
FieldData: this.props.FieldData,
CorrectionFactor: this.props.CorrectionFactor
});
你犯了两个错误
- 首先:在操作道具之前,您应该调用
super(props)
,然后使用this.props.FieldData
,您甚至可以在定义状态时在构造函数()中这样做,如:
constructor(props) {
super(props);
this.state = {
FieldData: this.props.FieldData,
CorrectionFactor: this.props.CorrectionFactor || 1
};
}
- 第二:您不应该像以前那样设置状态:
this.state.FieldData = this.FieldData;
您应该使用this.setState()
(读取),如下所示:
this.setState({
FieldData: this.props.FieldData,
CorrectionFactor: this.props.CorrectionFactor
});