我在Reaction中制作了一个模式窗口.我创建了一个名为modalbool的状态,并在modalbool为真时显示模式窗口.我创建了一个名为BackDrop的父组件,并在单击背景时关闭了模式窗口.但是,即使我单击了作为子组件的modalContainer组件,modalClosefunc也会被执行,并且模式窗口也会关闭.当只按下背景组件时,如何使modalbool变为False并关闭模式窗口?

这是我的代码

const Backdrop = styled.div`
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top:0;
left: 0;
background-color: rgba(0,0,0,0.7);
width: 100vw;
height: 100vh;
`

const ModalContainer = styled.div`
position: relative;
width: 700px;
height: 600px;
background-color: lightcoral;

`;

const [modalbool, setModalbool] = useState(false);



  {modalbool ? (
    <Backdrop onClick={modalClosefunc}>
    <ModalContainer>

    </ModalContainer>
</Backdrop>
      ) : null

推荐答案

快速而老套的解决方法是调整组件的css的z索引.如果modalbool为真,则将模式的z索引设置为某个较高的数字,并在您单击框后将其重置回基线.

您还可以 Select 将一个点击处理程序附加到该模式本身,并相应地编写逻辑.(一种用例可能是,此处理程序为模式上的鼠标悬停事件附加或删除事件侦听器,并在鼠标退出模式时将其关闭)

希望这个能帮上忙!

Javascript相关问答推荐

如何将拖放功能添加到我已自定义为图像的文件输入HTML标签中?

对象和数字减法会抵消浏览器js中的数字

如何在使用fast-xml-parser构建ML时包括属性值?

Phaser框架-将子对象附加到Actor

togglePopover()不打开但不关闭原生HTML popover'

无法在nextjs应用程序中通过id从mongoDB删除'

为什么我的列表直到下一次提交才更新值/onChange

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

用JavaScript复制C#CRC 32生成器

优化Google Sheet脚本以将下拉菜单和公式添加到多行

更新动态数据中对象或数组中的所有值字符串

如何将数组用作复合函数参数?

映射类型定义,其中值对应于键

VSCode中出现随机行

Reaction组件在本应被设置隐藏时仍显示

当标题被点击时,如何使内容出现在另一个div上?

如何根据查询结果重新排列日期

JavaScript&;Reaction-如何避免在不使用字典/对象的情况下出现地狱?

如果查询为空,则MongoDB将所有文档与$in匹配

调试jQuery代码以获取所有行的总和(票证类型)