react: вызов диалога при выборе элемента выпадающего списка

Использую React и Bootstrap:

создаю элемент выпадающего списка Dropdown:

// отрисовать компонент
render() {
    return (
        <Dropdown>
            <Dropdown.Toggle>...</Dropdown.Toggle>
            <Dropdown.Menu>
                <Dropdown.Item onSelect = {this.ipc__handleSelect}>...</Dropdown.Item>
            </Dropdown.Menu>
        </Dropdown>
    );
}

при выборе одного из элементов меню мне надо вызвать модальное окно, которое описывается моим компонентом <MyModalDialog />

// обработать выбор элемента из выпадающего списка
ipc__handleSelect = (eventKey: any, event: any) => {
    ...
}

подскажите, как правильнее его вызвать пока единственное, что приходит в голову - отрисовывать элемент сразу, просто невидимым, а потом делать видимым

// отрисовать компонент
render() {
    return (
        <>
            <Dropdown>
                ...
            </Dropdown>
            MyModalDialog show = {this.state.is_showed}/>
        </>
    );
}

// обработать выбор элемента из выпадающего списка
ipc__handleSelect = (eventKey: any, event: any) => {
    this.setState({
        is_showed: true
    });
}

но может это топорно все и есть правильный способ?


Ответы (1 шт):

Автор решения: xydope

Лучше вообще не рендерить модальное окно, если оно отключено. Биндим туглер модала -> пробрасываем пропсами в селект и в сам модал для закрытия окна, если он рендерится.

this.state.is_showed ? <MyModalDialog /> : null

render() {
    return (
        <>
            <Dropdown>
                ...
            </Dropdown>
            {this.state.is_showed ? <MyModalDialog close={/*ф-я изменения стейта для закрытия модала*/} /> : null} // рендерим модал, если он установлен.
        </>
    );
}

// обработать выбор элемента из выпадающего списка
ipc__handleSelect = (eventKey: any, event: any) => {
    this.setState({
        is_showed: true
    });
}

→ Ссылка