4

我正在使用反应模式

文档提到默认情况下单击覆盖时模式应该关闭。即使我将shouldCloseOnOverlayClick道具设置为true,这仍然不起作用。

我不知道任何可能阻止该事件发生的事情。

如果这与任何事情相关/指示性(而且我还没有弄清楚为什么会显示),我在 Chrome 开发人员工具中注意到我的模态的覆盖和内容节点都有一个未定义的类。我使用的所有 CSS 类都已定义并按应有的方式工作。

这是相关的 JSX 和 CSS,如果需要更多上下文,请告诉我。

JSX:

return (
    <div className="Modal">
        <Modal
            className={{
                base: 'Modal-content' + ' Modal-InputError-videoURL'
            }}
            overlayClassName={{
                base: 'Modal-overlay'
            }}
            isOpen={true}
            contentLabel="Modal"
        >
            {props.message}
            <br />
            <br />
            <br />
            <button
                className="Modal-button"
                onClick={events.handleCloseModal}
            >
                Close
            </button>
        </Modal>
    </div>
)

CSS类:

.Modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.35);
    z-index: 9998;
}

.Modal-content {
    display: relative;
    position: absolute;
    top: 50%;
    left: 50%;
    border: 1px solid #ccc;
    background: rgb(38,38,38);
    border: 1.5px solid rgb(45,45,45);
    overflow: auto;
    border-radius: 1px;
    outline: none;
    z-index: 9999;
    width: 400px;
    margin-left: -150px;
    margin-right: -150px;
    padding: 24px;
    line-height: 16px;
}

.Modal-InputError-videoURL {
    height: 134px;
    margin-bottom: -67px;
    margin-top: -67px;
}

.Modal-button {
    display: inline-block;
    padding: 4px;
    margin: 0;
}
4

3 回答 3

7

我通过使用onRequestClose(根据文档)解决了这个问题。似乎它react-modal没有存储isOpen在其本地状态中,因此我提供了一个回调来onRequestClose更新state父组件中的 ,随后将其作为道具传递给模态。

http://reactcommunity.org/react-modal/examples/on_request_close.html

于 2018-04-16T18:50:36.280 回答
3

isOpen 属性静态设置为 true。您应该通过将 isOpen 值保持在您的状态来控制其值。

isOpen = {this.state.isModelOpen}

在 handleCloseModal 方法中,您可以将其值设置为 false。

this.setState({isModelOpen: false})
于 2017-07-22T19:51:24.340 回答
0

我尝试在某个组件中使用模式,但点击覆盖关闭不起作用。然后,我将模态框移到上一个组件父级,它开始工作。

我想这与 z-index 有关,但我不确定。很抱歉遗漏了细节。

希望对大家有帮助!

于 2021-11-02T17:10:25.687 回答