在反应中关闭模态窗口

时间:2021-04-17 23:49:06

标签: javascript css reactjs

我正在做一个应用程序,我有一个模态窗口,当我点击黑色背景时我想关闭模态窗口,我这样做的方式是,问题是我有白色容器在模态窗口的中心,我需要点击那里的东西,当我这样做时,它会关闭整个窗口,即使 onClick 事件位于具有黑色背景的容器 ModalHero 上。

让我给你看代码...

import React from "react";
import { ModalHero, ContainSettings } from "./ModalSettingsStyled";

const Modal = ({ setProfile }) => {
  return (
    <ModalHero onClick={() => setProfile(false)}>
      <ContainSettings></ContainSettings>
    </ModalHero>
  );
};

export default Modal;

当我点击 ContainSettings 时,它会关闭窗口,但我不希望这种情况发生。

让我向您展示 css(我正在使用样式组件)

import styles from "styled-components";

export const ModalHero = styles.section`

width: 100%;
height: 100vh;

background: rgba(0,0,0, .5);

position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;

display: flex;
align-items: center;
justify-content: center;


`;

export const ContainSettings = styles.div`

width: 45%;
height: 40vh;

border-radius: .5rem;
background: white;

`;

这是它的样子

enter image description here

当我点击黑色背景时它会关闭窗口,但当我点击白色容器时它不会

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

您可以将 Event.stopPropagation() onClick={(e) => e.stopPropagation()} 放在您的 ContainSettings

<ContainSettings onClick={(e) => e.stopPropagation()}>

这是一个活生生的例子:

https://codesandbox.io/s/so-67143988-jmc0k?file=/src/Modal.js