如何双击切换 React 组件的可见性?
How to Double Click Toggle visibility of React Component?
目前有一个弹出组件显示双击使用 onDoubleClick()
handler.But 我想在双击弹出组件时关闭该弹出窗口,但我似乎无法获得它上班。这是我一直在尝试的,思考过程只是将 toggleModal 设置为 false,它应该可以工作。
const [selectedImageId, setSelectedImageId] = useState(-1);
const [toggleModal, setToggleModal] = useState(false);
const handleModalPopupOnClick = (id) => {
setSelectedImageId(id);
setToggleModal(true);
};
return (
<div>
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
<div onDoubleClick{()=> handleModalPopupOnClick(image.id)>Open Popup</div>
</div>
)
有什么想法吗?感谢您的任何建议或指导。
行
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
在渲染组件时立即调用参数为 false 的 setToggleModal
,我相信 undefined
会成为 onDoubleClick
的值。 (如果 setState
是否具有 return 值,则不是 100%)
要解决你的问题,你应该提供这个作为道具:
{toggleModal && <PopupModal onDoubleClick={() => setToggleModal(false)}/>}
这是提供函数定义而不是调用函数。
可能 PopupModal
是您的自定义组件,因此它不提供 onDoubleClick
事件。
onDoubleClick
这一行:
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
只是一个道具。
因此,您必须在 PopupModal
.
内的 onDoubleClick
事件的处理程序中调用 props.onDoubleClick
目前有一个弹出组件显示双击使用 onDoubleClick()
handler.But 我想在双击弹出组件时关闭该弹出窗口,但我似乎无法获得它上班。这是我一直在尝试的,思考过程只是将 toggleModal 设置为 false,它应该可以工作。
const [selectedImageId, setSelectedImageId] = useState(-1);
const [toggleModal, setToggleModal] = useState(false);
const handleModalPopupOnClick = (id) => {
setSelectedImageId(id);
setToggleModal(true);
};
return (
<div>
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
<div onDoubleClick{()=> handleModalPopupOnClick(image.id)>Open Popup</div>
</div>
)
有什么想法吗?感谢您的任何建议或指导。
行
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
在渲染组件时立即调用参数为 false 的 setToggleModal
,我相信 undefined
会成为 onDoubleClick
的值。 (如果 setState
是否具有 return 值,则不是 100%)
要解决你的问题,你应该提供这个作为道具:
{toggleModal && <PopupModal onDoubleClick={() => setToggleModal(false)}/>}
这是提供函数定义而不是调用函数。
可能 PopupModal
是您的自定义组件,因此它不提供 onDoubleClick
事件。
onDoubleClick
这一行:
{toggleModal && <PopupModal onDoubleClick={setToggleModal(false)}/>}
只是一个道具。
因此,您必须在 PopupModal
.
onDoubleClick
事件的处理程序中调用 props.onDoubleClick