Всем привет, подскажите логику, как сделать открытие/закрытие модального окна при:
1. Открывается при клике по кнопке-компоненту (Button) в другом компоненте (Main)
2. Закрывается по клику обычного дива в самом компоненте модального окна (Modal)
Соответственно, есть Main, в нем есть Button и Modal
В Main добавляете state, например, "показать-модалку" со значением false по умолчанию.
Также в Main делаете фунцию, например, "switchModal" в которой делаете setState({ "показать-модалку": !this.state."показать-модалку"}). На Button вешаете "switchModal" по клику.
Modal показываете в зависимости от state. Типа {"показать-модалку" && <Modal />}
В сам Modal передаете props с функцией "switchModal".
Внутри Modal делаете функцию closeModal = () => { this.props.switchModal() }
Вешаете "closeModal" на элемет по клику на который хотите закрывать Modal.
Если Button это компонент, то onClick передастся как props onClick в Button, будет ли изменятся state в Main, если я буду обрабатывать событие переданное через пропс onClick в компоненте Button?
Иван В, Ну смотрите, есть компонент Button, если передавать <Button onClick={...}/> то onClick передасться как props, то как мне передать событие onClick, чтобы менялся стейт в Main
Очень сильно поддерживаю вариант с созданием портала
В остальном аналогично ответу Иван В
Создаем состояние в стейте, либо сторе,
По клику вызываете методы, которые открывают/закрывают портал.