使用转义键关闭反应引导模式

Posted

技术标签:

【中文标题】使用转义键关闭反应引导模式【英文标题】:Closing a react bootstrap modal with escape key 【发布时间】:2017-02-18 10:57:06 【问题描述】:

我有 6 个按钮,单击它们会激活一个模式。这是用 React 编写的。

//Since I have 6 different modals, giving each of them an id would distinguish them
onCloseModal(id) 
    this.setState(
        open: false,
        modalShown: id
    )


render() 
    return (
        <Modal onHide=this.onCloseModal.bind(this, item.id) keyboard=true>
            <Modal.Header closeButton=true onHide=this.onCloseModal.bind(this)>
            </Modal.Header>
        </Modal>
    )

我有keyboard=true,根据https://react-bootstrap.github.io/components.html#modals-props 的文档,按Escape 键将退出模式。但是它不起作用。我相信我已经完成了所有设置,因为我的每个按钮都有一个唯一的 ID - 为什么退出键没有响应?

这是正在运行的模态图像。

【问题讨论】:

【参考方案1】:

您的组件状态似乎没有正确表示模态框的状态。我给你写了an example(这可能不是最佳实践?),它展示了如何以更具体的方式处理状态。

onCloseModal() 
  this.setState(
    modalShown: 0
  )


onShowModal(id) 
  this.setState(
    modalShown: id
  )


checkModal(id) 
  if (id == this.state.modalShown) 
    return true;
   else 
    return false;
  


<Modal show=this.checkModal(item.id) onHide=this.onCloseModal.bind(this)</Modal>

【讨论】:

对不起,我没有提供足够的代码,但我实际上已经(几乎完全)完成了您编写的代码:&lt;Modal show=item.id === this.state.modalShown onHide=this.onCloseModal.bind(this, item.id)&gt;&lt;/Modal&gt; 那你能提供一个 JSFiddle/JSBin 吗?我无法重现您的问题,在我的示例中转义键有效。 如果 API 真的不起作用,您可以在 ESC 按键上添加一个事件监听器,然后调用 onCloseModal

以上是关于使用转义键关闭反应引导模式的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以在规范模式下处理转义键?

如何绑定转义键以关闭此窗口

找出给定键组合的相应转义序列

使用 jQuery 的转义键的哪个键码

如何转义属性文件键中的特殊字符?

PYTHON使用转义键退出时出现问题