2017-12-05 2 views
0

Ich habe ein Modal in einer untergeordneten Komponente, die eine Löschfunktion in der übergeordneten Komponente behandelt. Das Kind hält den Zustand des Modalen (offen oder geschlossen), da dies der logischste Ort dafür zu sein scheint.Reagieren: Schließen von Modal in Unterkomponente von Parent

Eltern

removeItem() { 
    console.log('clicked'); 
    }; 

... 

<DeleteButton deleterecord={()=>this.removeItem(data.row._original._id)}/> 

Kinder

close() { 
    this.setState({ showModal: false }) 
}; 

open() { 
    this.setState({ showModal: true }) 
}; 


render() { 

return(
    <div> 
    <Button 
    bsStyle="primary" 
    bsSize="small" 
    onClick={this.open.bind(this)} 
    > 
    Delete 
    </Button> 

    <Modal 
    show={this.state.showModal} 
    onHide={this.close.bind(this)} 
    bsSize="small" 
    > 
    ... 

Wie soll ich in der Nähe des modalen vom Eltern nach dem removeItem Code ausgeführt wurde.

+0

Sie eine Funktion in geordnete Komponente von den Eltern nennen könnte, die im Wesentlichen den Zustand der Komponente Kind aktualisiert. Überprüfen Sie diese https://stackoverflow.com/questions/40235420/call-child-method-from-parent-in-react/40235756#40235756 –

+0

Bearbeitete meine Lösung, um eine Referenz zu verwenden, um die Child-Close-Funktion aufzurufen. Überprüfen Sie, ob es funktioniert. – Rodius

Antwort

3

Sie könnten eine Referenz verwenden, um die Funktion zum Schließen von Kindern aufzurufen?

Eltern

removeItem() { 
     console.log('clicked'); 
     this.child.close(); 
    } 

    render() { 
     return (
     <div> 
      <ChildWithModal ref={(ref) => { this.child = ref; }} /> 
     </div> 
    ); 
    } 

Kinder

... 

close() { 
    this.setState({ showModal: false }) 
}; 
+0

Danke dafür, aber die -Komponente ist auch im Elternteil. Ich werde meine Frage ändern, um einen Teil des Kindercodes hinzuzufügen. –

+0

Danke dafür, was "this.child" eigentlich sein sollte? Der Name der untergeordneten Komponente? –

+0

"Kind" ist der Name der Ref. Sie können den gewünschten Namen vergeben =). Versuchen Sie, etwas zu verwenden, mit dem Sie die Komponente leichter identifizieren können. Stellen Sie es sich als Alias ​​für die untergeordnete Komponente vor. – Rodius

Verwandte Themen