javascript - React 如何使用模式关闭弹出窗口

标签 javascript reactjs popover react-bootstrap

react-bootstrap ,我有一个包含列表的弹出窗口。单击其中一个列表项时,它会打开一个模式。

模式打开时如何关闭弹出窗口?

我尝试过:

  • rootClose 但它不起作用
  • React Bootstrap - How to manually close OverlayTrigger ,关闭弹出窗口和模式

    class TypeColumn extends React.Component {
    constructor(props, context) {
        super(props, context);
        this.close = this.close.bind(this);
    }
    
    close() {
        this.refs.overlay.hide();
    }
    
    render() {
        const popoverClick = (
            <Popover id="popover-trigger-click-root-close">
                <ul>
                    <NumberOptions onClick={this.close} />
                </ul>
            </Popover>
        );
    
        return (
            <OverlayTrigger
                show={show}
                trigger="click"
                placement="bottom"
                overlay={popoverClick}
                ref="overlay"
            >
                <i
                    className={columnTypeIcon} aria-hidden="true"
                />
            </OverlayTrigger>
        );
    }
    }
    
    class NumberOptions extends React.Component {
    constructor(props) {
        super(props);
        this.open = this.open.bind(this);
    
        this.state = {
            showModal: false,
        };
    }
    
    open() {
        this.setState({ showModal: true });
        this.props.onClick();
    }
    
    render() {
        return (
            <div>
                <li
                    data-value={DATA_TYPES.NUMBER}
                    onClick={this.open}
                >
                    Options nombre
                </li>
    
                <Modal
                  show={showModal}
                  dialogClassName={styles.customModal}
                >
                ...
                </Modal>
            </div>
        );
    }
    }
    

最佳答案

由于您的组件 ModalNumberOptions 的子组件,因此当 NumberOptions 关闭时,Modal 也会关闭。

因此,您需要将 Modal 组件至少提升到与 OverlayTrigger 相同的级别。

关于javascript - React 如何使用模式关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922033/

相关文章:

javascript - ".mouseleave"不遵守 jQuery 中的 ".not"

javascript - 其他人如何连接到我的 Websocket 服务器?

javascript - 使用 CSS 在单击元素时创建 iPhone 样式滑出

javascript - 在 React.js 中自动重置计时器

python - 有什么方法可以在 django 模板中允许\n? ( Bootstrap 弹出窗口)

jquery - Bootstrap 4 Popover Javascript 显示后

javascript - webpack build 后 karma 没有找到任何 spec 文件

javascript - 数组更新时 ReactJS 组件更新

reactjs - 使用react-router-redux,如何以编程方式重定向到URL

ajax - Bootstrap Multiple Popover - 通过 Ajax 加载内容 TypeError