Cześć!
Poszukuję wymiatacza React’owego, który pomoże mi z moim problemem Sprawa wygląda następująco: w moim (i nie tylko) dość dużym (nawet bardzo) projekcie tworzę formę, która ma się wyświetlać wewnątrz modalu. Modal jest w osobnym komponencie, akcja wywołania modala znajduje się w osobnym komponencie, a pomiędzy nimi jest jeszcze jeden komponent, który mając na uwadze kliknięty przez nas element wyświetla odpowiednią formę (i to już np. jest ten modal). Tak w skrócie wygląda flow, a teraz przejdę do większych szczegółów i samego kodu:
Rodzic (w nim następuje kliknięcie i w nim inicjuję prop, który będzie odpowiedzialny za wyświetlenie modala):
/* ... */
showModal: true // tylko tyle dotyczy modala w onClick
/* ... */
{this.state.addingState && (
<MyForm
{...this.state.item}
show={this.state.showModal}
/* ... */
/>
)}
Teraz komponent MyForm, który zajmuje się przekazywaniem prop do odpowiednich komponentów tworzących odpowiednie formy:
createModalComponent {
/* ... */
let modalComponentProps= {
/* ... */
show: this.props.show
/* ... */
}
}
Na koniec sam komponent z modalem:
/* ... */
constructor(props) {
super(props);
this.state = {
show: this.props.show
};
this.handleHide = this.handleHide.bind(this);
}
/* ... */
handleHide() {
this.setState({ show: !this.state.show });
}
/* ... */
<React.Fragment>
<Modal
{...this.props}
bsSize="large"
aria-labelledby="contained-modal-title-lg"
show={this.state.show}
onHide={this.handleHide}
>
<Modal.Body>
...
</Modal.Body>
<Modal.Footer>
<Button id = "closeModal" variant="danger" onClick=
{this.handleHide}>
Save and close
</Button>
</Modal.Footer>
</Modal>
</React.Fragment>
Próbowałem sam się z tym uporać, ale nic niestety nie udało mi się zmienić. Interesujące jest to, że modal po kliknięciu się wyświetla, ponadto this.state.show zmienia się tak, jak można by tego oczekiwać. To coś z metodą handleHide() jest nie tak (przynajmniej tak myślę), ale naprawdę nie mam pojęcia co… Za jakąkolwiek pomoc serdecznie dziękuję!