All*_*car 4 javascript keyboard-events modalpopup reactjs reactstrap
我还需要使用“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;
Run Code Online (Sandbox Code Playgroud)
跟随模态有两个动作
您可以设置事件侦听器。
useEffect(() => {
const close = (e) => {
if(e.keyCode === 27){
props.onCloseModal()
}
}
window.addEventListener('keydown', close)
return () => window.removeEventListener('keydown', close)
},[])
Run Code Online (Sandbox Code Playgroud)
在普通 JavaScript 中,你可以这样做:
document.onkeydown = function (evt) {
if (evt.keyCode == 27) {
// Escape key pressed
props.onCloseModal();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4525 次 |
| 最近记录: |