Reactjs react-对作为提示传递的组件的引用
我在测试组件中呈现了EditModal组件。我通过“this.edit”引用它。 我将UserForm组件作为提示符传递给EditModal。我也试着引用它。但是'this.form'返回未定义的 为什么??有什么办法解决这个问题吗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&
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的操作。