чтобы остановить всплывающее окно события, хотя это, похоже, не работает.
Вы имели в виду, что всплывающее событие не работает или просто модал не работает вообще? Я обнаружил две проблемы с кодом, которые после исправления, кажется, делают модальную работу. Кроме того, вы можете хотеть поведение e.preventDefault()
, но я не уверен из вашего вопроса.
Проблемы и исправления:
- Отсутствует реквизит в сигнатуре метода:
const Modal = (props) => {
- Не используется
show
реквизит для отображения / скрытия модального div: props.show && <div className="modal__wrapper" onClick={props.toggle}>
stopPropagation & protectDefault
Для просмотра различия в поведении stopPropagation
и preventDefault
, попробуйте добавить это radio
под кнопкой. Вам нужно будет обновлять sh страницу каждый раз, когда вам нужно сбросить radio
для эксперимента.
<input type="radio" name="gender" value="male" onClick={toggleModal}/>
preventDefault
останавливает установку radio
, он предотвращает установку значения по умолчанию для радиокомпонента.
stopPropagation
будет , а не остановит установку radio
, потому что он только останавливает всплывающее событие до родительские элементы. Было бы полезно на text <input>
предотвратить такие события, как клавиша Enter, от воздействия на родительский элемент <form>
для отправки (если это было необходимо).
Надеюсь, это поможет решить вашу проблему.