【问题标题】:Close Modal Popup using Esc key on keyboard使用键盘上的 Esc 键关闭模式弹出窗口
【发布时间】:2020-11-14 09:05:51
【问题描述】:

我还需要使用“ESC”键关闭模式,此时它正在关闭“CLOSE”和“CONFIRM”按钮。我正在使用 reactstrap,react hooks。 键盘 {show} 和 handleClose 没用。

代码如下:


const DeleteUserModal = props => {
    const { user, show } = props;

    const deleteUser = async () => {
        await props.removeUser(user);
        props.onCloseModal();
    };

    const handleKeyPress = target => {
        if (target.charCode === ENTER_KEY) {
            deleteUser();
        }
    };
    


    return (
        <div onKeyPress={handleKeyPress}>
            <Modal isOpen={show} toggle={props.onCloseModal}  >
                
                <ModalHeader toggle={props.onCloseModal}>
                    <IntlMessages id="modal.delete.user.title" />
                </ModalHeader>

                <ModalBody>
                    <IntlMessages id="modal.delete.user.description" />
                </ModalBody>

                <ModalFooter>
                    <Button className="cancel" onClick={props.onCloseModal}>
                        <IntlMessages id="modal.common.cancel" />
                    </Button>
                    <Button className="action" onClick={deleteUser}>
                        <IntlMessages id="modal.common.ok" />
                    </Button>
                </ModalFooter>
            </Modal>
        </div>
    );
};

export default DeleteUserModal;

通过两个动作跟随模态

【问题讨论】:

  • 关闭按钮是什么意思?
  • 请参考bootstrap提供的以下getbootstrap.com/docs/4.0/components/modal/#options
  • 我需要按 ESC 键关闭模式。目前按下确认按钮或取消操作时它会关闭。我正在检查文档,但是当我输入代码时,什么也没有发生。

标签: javascript reactjs keyboard-events reactstrap modalpopup


【解决方案1】:

你可以设置一个事件监听器。

 useEffect(() => {
      const close = (e) => {
        if(e.keyCode === 27){
          props.onCloseModal()
        }
      }
      window.addEventListener('keydown', close)
    return () => window.removeEventListener('keydown', close)
  },[])

【讨论】:

【解决方案2】:

在原生 JavaScript 中,你可以这样做:

document.onkeydown = function (evt) {
    if (evt.keyCode == 27) {
        // Escape key pressed
        props.onCloseModal();
    }
};

【讨论】:

  • 我假设props.onCloseModal(); 用于关闭模式。我这辈子都没用过reactjs,有不对的地方请指正。
  • 我会做这个测试
【解决方案3】:

您可以查看引导文档。

如果没有找到,那么您可以在 ESC 按键上添加一个事件监听器,然后调用 onCloseModal

【讨论】:

  • 我会做这个测试
猜你喜欢
  • 2014-08-30
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
相关资源
最近更新 更多