Я предполагаю, что все ваши модалы имеют одинаковую структуру, и, поскольку в любой момент времени пользователю будет показан только один модал
Вы можете создать на модале многократного использования, который имеет следующие поля:
- Название
- Описание
- Кнопка действия
- Кнопка отмены
Вы можете попробовать создать что-то вроде этого:
class UserManagement extends React.Component {
constructor(props) {
this.state = {
showModal: false,
modalTitle: "",
modalDescription: "",
modalAction: null
}
}
showDeleteModal() {
this.setState(prevState => ({
modalTitle: "Delete Data ?",
modalDescription: "Are you sure you want to delete this data from the system ?",
modalAction: this.onDeleteRow
}), this._toggleDeleteModal)
}
_toggleDeleteModal = () => {
this.setState(prevState => ({
showModal: !prevState.showModal
}))
};
onDeleteRow = () => {
console.log("delete");
};
render() {
return (
<div>
{this.state.showModal && (
<Modal
data={this.state.modal}
onToggleModal={this._toggleModal}
/>
)}
</div>
);
}
}
Вы можете иметь одну конкретную функцию для каждого варианта использования (например, Удалить), которая устанавливает заголовок, описание и т. Д.
Вы можете в дальнейшем переместить весь код, который я показал, в HOC и импортировать его в свой компонент UserManagement, если вы думаете, что они будут выполнять статические операции без требования ввода от компонента UserManagement.