我的问题很简单......我在我的应用程序中使用 HeadlessUI 的 Dialog 组件进行 React,当我点击退出模式时,我希望它不会关闭。在文档中,有对话框。处理此交互的叠加参数,但没有禁用它的设置。
有什么解决办法吗?这是我正在使用的组件的 HeadlessUI 文档的链接:https ://headlessui.dev/react/dialog
也许你知道 React 的那种“警报阻止模式”?
我的问题很简单......我在我的应用程序中使用 HeadlessUI 的 Dialog 组件进行 React,当我点击退出模式时,我希望它不会关闭。在文档中,有对话框。处理此交互的叠加参数,但没有禁用它的设置。
有什么解决办法吗?这是我正在使用的组件的 HeadlessUI 文档的链接:https ://headlessui.dev/react/dialog
也许你知道 React 的那种“警报阻止模式”?
您可以从您提供的链接中删除onClose={closeModal}
fromDialog
并将closeModal
函数传递给示例中任何按钮的 onClick 处理程序:
<Dialog
as="div"
className="fixed inset-0 z-10 overflow-y-auto" // removed onClose
>
而是将其传递给对话框内的关闭按钮
<button onClick={handleClose}>Close</button>
添加pointer-events: none
到 Dialog.Overlay。
这可以通过添加pointer-events-none
类来完成
https://github.com/tailwindlabs/headlessui/issues/621#issuecomment-867161749
在 Dialog UI 的 onClose 函数中添加返回空对象。这是我的代码:
<Dialog
initialFocus={completeButtonRef}
as='div'
className='fixed inset-0 z-10 overflow-y-auto'
onClose={() => {}}
open={false}
>
我对https://headlessui.dev/react/dialog ReactJS 和 Typescript有同样的问题
我修复了传递一个名为 onClose(value: boolean): void; 的新道具。我可以在其中处理组件 onClose={() => {setIsOpen(false) }} 之外的状态,并在对话框中调用道具 onClose={onClose}
第1部分
<Transition appear show={showModal} as={Fragment}>
<Dialog
as="div"
className={clsx("fixed inset-0 z-50 overflow-y-auto",
className)}
onClose={onClose}
>
……
第2部分enter code here
<Modal
{...args}
showModal={isOpen}
onClose={() => {setIsOpen(false) }}
/>