Из родительского компонента я вызываю диалог AlertDialog, который я отправляю с реквизитом openIt со значением true
это родительский компонент
...
{this.state.open && (
<Dialog extends openit={true} />
) }
...
дочерний компонент Диалог
import ...;
...
let isOpen = false;
class Dialog extends extends Component {
constructor(props) {
super(props);
this.state = {
open: false,
};
}
componentDidMount() {
}
static getDerivedStateFromProps(props, state) {
if (state.open === false && isOpen === false) {
state.open = props.openIt;
return state.open;
}
return null;
}
handleClose = () => {
this.setState({ open: false });
isOpen = true;
};
render() {
const { open } = this.state;
return (
<Dialog open={open} >
</Dialog>
...
в этом методе я пропускаю опцию openIt, чтобы заявить об открытии, так что этот метод вернет true в качестве значения open, и появится диалоговое окно
, когда я нажму ok, чтобы закрыть диало, вызывается метод handleClose и значение из open будет ложным, но проблема getDerivedStateFromProps будет запущена снова во второй раз, когда я запускаю
{this.state.open && (
<Dialog extends openit={true} />
) }
, модальное состояние не будет отображаться, потому что состояние открытия истинно, я не знаю, как решить эту проблему