如何修复模态窗口?

杰西卡·康沃尔(Jessica Cornish)

单击任何方式都会关闭我的模态窗口。但是,仅当您单击模态窗口时,它才应关闭。我究竟做错了什么?当我单击应关闭的窗口时,我做了“覆盖”。现在我什至不能写任何形式的表格。

你能帮我吗?我还是新手。

这就是我自己写的。

class App extends React.Component {

    constructor(props){
        super(props);
        this.state = {isShow: false};
        this.showHidePopup = this.showHidePopup.bind(this);
    }

    showHidePopup(){
        let isShow = this.state.isShow;
        this.setState({isShow: !isShow});
    }

    render() {
        return (
            <div>
                <div>
                    <li onClick={this.showHidePopup} className="sign-in">sign up</li>
                    {this.state.isShow ? <Authorisation /> : null}
                </div>
            </div>
        );
    }
}

const styles = {
    afterClick:{display:'none'},
    beforeClick:{display:'block'}
}

class Authorisation extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            isClickedOutside: false
        }
        this.handleClickBackground = this.handleClickBackground.bind(this);
    }

    handleClickBackground = () => {
        this.setState( {isClickedOutside: !this.state.isClickedOutside})
    }

    render() {
        return (
            <div className={'overlay'} onClick={this.handleClickBackground} style={this.state.isClickedOutside ? styles.afterClick : styles.beforeClick} >
                <div className="login-form">
                    <p className="enter">Вход</p>
                    <button className="vk">Вконтакте</button>
                    <div className="info-login">
                        <input required="required" type='email' placeholder="Почта"/>
                        <input required="required" type="password" placeholder="Пароль"/>
                        <a className="iForgotPassword" href="/#">забыли пароль?</a>
                    </div>
                    <button className="enter-button">Войти</button>
                    <div className="registration">Зарегистрироваться</div>
                </div>
            </div>
        );
    }
}

ReactDOM.render(
  <App />,
  document.getElementById('container')
);
.overlay {
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
    z-index: 1;
    margin: auto;
    width: 100%;
    height: 100%;
    position: fixed;
    background: #999;
}

.login-form {
  width: 300px;
  height: 300px;
  border:1px solid #000;
  background:#777;
  z-index:3;
  margin:auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

拉克夏·塔库尔(Lakshya Thakur)

将您的实现更改handleClickBackground为以下内容:

handleClickBackground = (e) => {
    if(e.target.className==='overlay')
    {
        this.setState( {isClickedOutside: !this.state.isClickedOutside})
    }
    }

这样可以确保您target是唯一负责设置状态的人。当您单击“登录”表单时,它还会触发一个click事件,事件冒泡到叠加层并触发onClick

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何关闭模态窗口的非模态子窗口?

来自分类Dev

如何关闭模态窗口的非模态子窗口?

来自分类Dev

模态窗口:如何为每个模态设置不同的内容?

来自分类Dev

如何更改Vue js Bootstrap模态窗口的模态标题的名称?

来自分类Dev

AngularJs-如何分离模态窗口?

来自分类Dev

如何使用直接链接到模态窗口

来自分类Dev

错误:如何正确关闭我的模态窗口

来自分类Dev

如何只打开特定的模态窗口?

来自分类Dev

AngularJs-如何分离模态窗口?

来自分类Dev

如何从angularjs关闭引导模态窗口

来自分类Dev

如何绑定数据模态窗口(MVC)

来自分类Dev

如何创建表单模态弹出窗口

来自分类Dev

如何使模态窗口的背景图像与模态窗口同时出现,而不是之前出现?

来自分类Dev

如何使模态窗口的背景图像与模态窗口同时出现,而不是同时出现?

来自分类Dev

如何在 Laravel 5.3 中修复 AJAX 模态表单

来自分类Dev

如何修复视差窗口滚动溢出?

来自分类Dev

如何在后台修复窗口?

来自分类Dev

如何永久修复从屏幕外启动的窗口?

来自分类Dev

如何修复损坏的Skype群聊(窗口)?

来自分类Dev

如何在剑道模态窗口上隐藏关闭按钮

来自分类Dev

如何防止我的jquery模态滚动到窗口顶部?

来自分类Dev

如何在Wicket中显示带有图像的模态窗口

来自分类Dev

您如何提醒视障用户正在显示模态窗口?

来自分类Dev

如何从ICEfaces模态弹出窗口调用托管bean?

来自分类Dev

如何在聚焦模态窗口上获得“心跳”效果?

来自分类Dev

用户在模态窗口外单击时如何响铃?

来自分类Dev

宏大的弹出窗口-如何引用模态中的按钮?

来自分类Dev

身体背景与模态窗口重叠如何解决?

来自分类Dev

如何将php变量传递给模态窗口

Related 相关文章

  1. 1

    如何关闭模态窗口的非模态子窗口?

  2. 2

    如何关闭模态窗口的非模态子窗口?

  3. 3

    模态窗口:如何为每个模态设置不同的内容?

  4. 4

    如何更改Vue js Bootstrap模态窗口的模态标题的名称?

  5. 5

    AngularJs-如何分离模态窗口?

  6. 6

    如何使用直接链接到模态窗口

  7. 7

    错误:如何正确关闭我的模态窗口

  8. 8

    如何只打开特定的模态窗口?

  9. 9

    AngularJs-如何分离模态窗口?

  10. 10

    如何从angularjs关闭引导模态窗口

  11. 11

    如何绑定数据模态窗口(MVC)

  12. 12

    如何创建表单模态弹出窗口

  13. 13

    如何使模态窗口的背景图像与模态窗口同时出现,而不是之前出现?

  14. 14

    如何使模态窗口的背景图像与模态窗口同时出现,而不是同时出现?

  15. 15

    如何在 Laravel 5.3 中修复 AJAX 模态表单

  16. 16

    如何修复视差窗口滚动溢出?

  17. 17

    如何在后台修复窗口?

  18. 18

    如何永久修复从屏幕外启动的窗口?

  19. 19

    如何修复损坏的Skype群聊(窗口)?

  20. 20

    如何在剑道模态窗口上隐藏关闭按钮

  21. 21

    如何防止我的jquery模态滚动到窗口顶部?

  22. 22

    如何在Wicket中显示带有图像的模态窗口

  23. 23

    您如何提醒视障用户正在显示模态窗口?

  24. 24

    如何从ICEfaces模态弹出窗口调用托管bean?

  25. 25

    如何在聚焦模态窗口上获得“心跳”效果?

  26. 26

    用户在模态窗口外单击时如何响铃?

  27. 27

    宏大的弹出窗口-如何引用模态中的按钮?

  28. 28

    身体背景与模态窗口重叠如何解决?

  29. 29

    如何将php变量传递给模态窗口

热门标签

归档