@rgs350

Модальные окна. Куда и как рендерить?

Здравствуйте. Есть модальное окно (ну например с информацией о товаре) + несколько элементов управления (кнопки), при нажатии на которые должно отображаться это модальной окно. Куда рендерить модальное окно?
1. В каждой кнопке писать {this.state.isShowModal && <Modal/>}, но как-то глупо хардкодить его в каждом элементе управления.
2. Тоже самое в App, но тогда при открытии каждого окна будет реконсилироваться всё приложение.
  • Вопрос задан
  • 1244 просмотра
Решения вопроса 1
@davidnum95
Рендерить можно через портал в корне приложения, управлять состоянием через контекст. Получится что то типа:
<ModalContext.Consumer>
    {(showModal) => <button onClick={() => showModal(modalProps)}>Open Modal</button>}
</ModalContext.Consumer>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Модальные окна необязательно должны отдавать в render что-то, кроме как null, когда они "закрыты". Поэтому рендерьте окна ближе к корню DOM-дерева приложения, они будут рендериться, но в render будет null, если isShowModal = false.
Ответ написан
@forspamonly2
как раз для этого в реакте теперь есть порталы:
https://reactjs.org/docs/portals.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект