Хорошо, поэтому я сам нашел решение, и поскольку в Интернете я не мог найти больше информации о том, как это сделать, я решил поделиться этим решением.
Итак, я установил реагировать-материализоватьсначала и создал компонент для удержания модального и рендеринга модального.
Я заменил функцию нажатия кнопки на функцию, которая обновляет состояние текущего компонента следующим образом:
const handleClick = category => {
this.setState({
categoryClicked: category,
modalOpen: true
});
};
Iзатем привязал компонент, содержащий модель, к этому состоянию, используя реквизиты, например так:
<ConfirmDeletion
onClickYes={null}
onClickNo={null}
name={this.state.categoryClicked.name}
open={this.state.modalOpen}
actions={[
<button
onClick={modalNo}
className="modal-close waves-effect waves-green btn-flat"
>
No
</button>,
<button
onClick={modalYes}
className="modal-close waves-effect waves-green btn-flat"
>
Yes
</button>
]}
/>
Обратите внимание, что действия представляют собой список элементов JSX, которые должны быть кнопками на модальной панели.Я также создал обработчики событий click для обновления состояния (и удаления из базы данных в случае «да») следующим образом:
const modalYes = () => {
this.props.deleteCategory(this.state.categoryClicked._id);
this.setState({
modalOpen: false
});
};
const modalNo = () => {
this.setState({
modalOpen: false
});
};
и просто для полноты, вот компонент, обертывающий модальное в случае, если этопригодится каждому в будущем:
import React, { Component } from "react";
import { Modal } from "react-materialize";
class ConfirmDeletion extends Component {
render() {
const { name, open, actions } = this.props;
return (
<Modal
id="confirmDeletion"
open={open}
actions={actions}
header="Are you sure?"
>
<div className="modal-content">
<p>
Are you sure you want to do delete '{name}'? It cannot be undone.
</p>
</div>
</Modal>
);
}
}
export default ConfirmDeletion;