如果在模态内部启动或结束click事件,如何防止简单的React模态关闭?

瑞安·佩舍尔(Ryan Peschel)

我一直在研究React中制作的许多模式,其中很多似乎都存在这个问题,因此我在jsFiddle中放了一个简单的例子来演示这个问题。

摘录中的代码:

handleOutsideClick = e => {
    if (e.target.id === "modal-view-info") {
      this.props.closeSelf();
    }
}

基本上,它可以工作(在模态外部单击将其关闭)。问题是我要使其仅在click事件开始并在模态之外结束时才关闭模态。也就是说,如果您在模式外部启动mousedown,但是将其拖到相应鼠标向上的模式内部,则模式不应关闭。同样,如果在模态内部开始单击并在模态外部结束单击,则不应关闭它。

我已经将它弄乱了一段时间,我相信问题在于浏览器认为e.Targetclick事件中from是父元素。也就是说,如果您开始在子元素内部单击,然后释放父元素内部的鼠标按钮,e.Target则将成为父元素。e.Target在相反的情况下,它将也是父元素。这使事情变得棘手。

是否可以修改代码段以包含此功能?我已经在整个代码库中使用了这种模态代码,因此我宁愿只解决此问题,而不要使用完全不同的设计。

er

不要听整个模式上的click事件。取而代之的是,在模式后面放置一个隐藏的div,以捕获仅位于模式外部的点击。

的CSS

.modal-close {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}

零件

class Modal extends React.Component {
  constructor(props) {
    super(props);

    }

  render() {
    return (
      <div>
        <div id="modal-view-info" className="modal" >
          <div className="modal-close" onClick={this.props.closeSelf} />
          <div className="modal-content">
            Hello how are you doing?
            Well I hope!
          </div>
        </div>
      </div>
    )
  }
}

https://jsfiddle.net/vdwr7Lg5/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果在模态区域之外单击,则防止模态退出

在LinkButton单击内部模态后防止Boostrap模态关闭

如何防止angular-ui模态关闭?

如果在Android中关闭了启动活动,如何使应用程序关闭

react Portal-在模态外部单击时如何关闭模态,以及如何在父组件渲染模态内部将ref分配给模态?

如果在内部单击,则OnBlur关闭react组件

如果用户单击其他任何位置,Bootstrap模态关闭。如何防止这种情况发生?

防止基于模态控制器内部的逻辑关闭AngularJS模态

防止关闭模态呈现的 ViewController

如果在react-admin中查询字段的长度很短,如何防止获取请求的发送

react-responsive-modal :当我们在 div 外单击时如何防止关闭模态

如何防止模态点击?

如果在内容之外单击,则React Modal关闭

如何防止引导模态在使用Codeigniter提交的表单上关闭?

如果在画布上方有按钮并且鼠标进入按钮,如何防止Canvas触发mouseenter / mouseleave事件

Bootstrap 模态关闭事件不会触发模态覆盖的关闭

如果在协程内部声明是如何工作的?

如何在 ngBootstrap 和 Angular 中监听模态的关闭事件?

数据删除:如何关闭内部的引导程序模态

如果在Swift中完成playOnce,则结束或关闭Lottie动画视图

React Native:模态关闭功能

如果在一个周期结束之前再次启动,则动画视图损坏

在模态中启动模态

如果按钮未放置在模态体内,则关闭引导模态

如果存在多个模态,则模态弹出窗口不会关闭

简单的SwiftUI模态表示,并通过@StateObject关闭

关闭弹出式简单模态

如何从右到左关闭模态ViewController?

关闭事件后的角度ui模态