reactjs - 在 React UseEffect 上同时关闭两个弹出窗口
问题描述
我有以下代码,并且在主组件中有 2 个弹出窗口。当我按下 ESC 时,我正在从另一个弹出窗口中打开一个弹出窗口,它会关闭其中的 2 个窗口。我怎样才能只关闭一个组件而其他组件仍然打开?
注意:isOpen 是布尔类型并打开弹出窗口
function escHandler (event: KeyboardEvent) {
if (event.key === 'Escape') closePopup()
}
useEffect(() => {
//
// Escape key handling
//
if(isOpen && closePopupByClickingOutside) window.addEventListener('keydown', escHandler)
return () => {
window.removeEventListener('keydown', escHandler)
}
}, [ isOpen ])
关闭弹出
export interface OpenClosePopupProps {
isOpen: boolean;
closePopup: () => void;
}
<div className="close-popup" onClick={() => closePopup()}></div>
解决方案
推荐阅读
- python - 剥离和重命名文件
- git - 在 GitLab 中使用个人访问令牌从提交中识别用户
- java - 即使不应该接受输入,JAVA程序也会一直阻止终端输入
- consul - Consul bootstrap-期望值
- javascript - 如何在 HostedWebApps 中使用 Cordova InAppBrowser?
- python - 跨系列映射有序字典
- cucumber - 使用 cucumber-jvm 4 并行运行黄瓜测试
- android-layout - 扩展 AbstractDetailsDescriptionPresenter 文本的类被截断
- ruby-on-rails - Rails 5.2 - 子菜单不保持打开(Turbolink?)
- javascript - Spring boot Rest thymeleaf javascript 不返回 HTML