Reactjs React将未安装的组件添加到阵列

Reactjs React将未安装的组件添加到阵列,reactjs,Reactjs,我正在尝试创建多个组件以供将来渲染,将tham添加到阵列中,如下所示: widgets.push(<TextWidget fieldData={fieldData} correctionFactor={correctionFactor} />); 如果我做smth喜欢this.state.FieldData=props.FieldData

我正在尝试创建多个组件以供将来渲染,将tham添加到阵列中,如下所示:

widgets.push(<TextWidget fieldData={fieldData} correctionFactor={correctionFactor} />);

如果我做smth喜欢
this.state.FieldData=props.FieldData我认为您忘记了在构造函数中调用
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
});