Reactjs react-对作为提示传递的组件的引用

Reactjs react-对作为提示传递的组件的引用,reactjs,react-props,react-component,Reactjs,React Props,React Component,我在测试组件中呈现了EditModal组件。我通过“this.edit”引用它。 我将UserForm组件作为提示符传递给EditModal。我也试着引用它。但是'this.form'返回未定义的 为什么??有什么办法解决这个问题吗 class Test extends React.Component { test(){ this.form.someMethod(); } render() { return ( <div&

我在测试组件中呈现了EditModal组件。我通过“this.edit”引用它。 我将UserForm组件作为提示符传递给EditModal。我也试着引用它。但是'this.form'返回未定义的

为什么??有什么办法解决这个问题吗

class Test extends React.Component {

   test(){
     this.form.someMethod();
   }

    render() {   
      return (
        <div>            
          <EditModal form={<UserForm ref={(form) => { this.form = form; }} />} ref={(edit) => { this.edit = edit; }}/>                        
        </div>
      );
    }
  }
export default Test;
类测试扩展了React.Component{
测试(){
this.form.someMethod();
}
render(){
返回(
}ref={(编辑)=>{this.edit=edit;}}}/>
);
}
}
导出默认测试;
//EditModal.js

class EditModal extends React.Component {
    constructor() {
        super();
        this.handleShow = this.handleShow.bind(this);
        this.handleClose = this.handleClose.bind(this);
        this.state = { show: false};
    }

    handleClose() {
        this.setState({ show: false });
    }

    handleShow(id) {
        this.setState({ show: true, currentId: id});
    }

  render() {
    return (
        <Modal show={this.state.show} onHide={this.handleClose}>
            <Modal.Header closeButton={false}>
            <Modal.Title>Uprav zaznam</Modal.Title>
            </Modal.Header>
        <Modal.Body>
           {this.props.form}
        </Modal.Body>
            <Modal.Footer>
            <Button onClick={this.handleClose}>Zatvorit</Button>
            </Modal.Footer>
      </Modal>
    );
  }
}

export default EditModal;
类editmodel扩展了React.Component{ 构造函数(){ 超级(); this.handleShow=this.handleShow.bind(this); this.handleClose=this.handleClose.bind(this); this.state={show:false}; } handleClose(){ this.setState({show:false}); } handleShow(id){ this.setState({show:true,currentId:id}); } render(){ 返回( 乌普拉夫·扎兹南 {this.props.form} 扎特沃利特 ); } } 导出默认编辑模式;
一旦安装了
UserForm
组件(可能在
editmodel
中),并且只有
editmodel
没有克隆表单道具并覆盖
ref
时,才能访问此.form

因此,如果
this.form
未定义,则表示它尚未装入,或已卸载(通过调用测试方法),或已覆盖
ref


如果没有
editmodel
的代码,任何人都无法确定上述哪种情况

什么是this.form和this.edit?它们的定义在哪里。请发布包含它们的代码。它们在EditModal组件中引用。我不熟悉它,抱歉…您在什么时候调用了
this.form.someMethod()?setTimeout(函数(){console.log(this.form);}.bind(this),3000);现在它返回测试方法中的对象。谢谢。您可能想找到一种比使用setTimeout更好的方法。您可能可以在接收组件实例时在ref回调本身中启动依赖于this.editForm的操作。