- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 HeadlessUI 的导航栏 Popover
在手机上的汉堡菜单。默认情况下,当您点击/关注不在其中的元素时,此菜单会关闭。
现在我尝试添加一个模式 (HeadlessUI Dialog
),当我点击弹出菜单中的按钮时我想打开它。模式在 ModalButton
中使用组件定义(<><button><dialog></>
)。这样做是为了分离关注点(与模态相关的所有内容都在 ModalButton
内)。
问题是:当我在导航栏的弹出菜单中并单击按钮打开对话框时。浏览器关注这个新对话框,因此弹出窗口失去焦点,使其关闭。由于它关闭,按钮(以及对话框同级)不再呈现,因此对话框立即消失。
作为引用,这是 react 树的伪代码:
<navbar>
<popover>
<> {/* "ModalButton" containing both the button and the dialog */}
<button /> {/* Button that opens the dialog */}
<dialog /> {/* This uses a portal internally (with HeadlessUI) */}
</>
</popover>
</navbar>
我能想到几种方法来解决这个问题,但都不是很好:
Popover
从关注对话框时关闭? (但在聚焦任何非对话框时仍然允许它关闭)我很想听听有关解决此问题的任何想法。
最佳答案
您应该将对话框放在树中更高的位置。通常这些可以出现在页面级别,甚至是应用级别,具体取决于这些对话框的全局性。
然后,您可以使用您最喜欢的全局状态管理器或 useContext
Hook 来指示这些对话框从您应用中的任何位置以编程方式打开。
在这种情况下,弹出窗口自动关闭应该不再是问题。
关于javascript - React HeadlessUI 中 Popover 中的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70537772/
我有一个 vue 组件,它使用 headlessui for vue 显示带有一些内容的弹出窗口,我想在单击内容时关闭它。我已阅读 headlessui/vue docs用于手动处理 Popover
我有一个使用 HeadlessUI 的导航栏 Popover在手机上的汉堡菜单。默认情况下,当您点击/关注不在其中的元素时,此菜单会关闭。 现在我尝试添加一个模式 (HeadlessUI Dialog
我尝试安装 @headlessui/vue在我的 nuxt项目。 当我尝试使用它时: Item import Vue from 'vue' impor
我想使用 VueUse's virtual scroller可组合以呈现 HeadlessUI's listbox内容。 这是我尝试过的: test
我想创建以下效果: 目前,我有这个奇怪的效果: 我正在使用 Transition来自 @headlessui/react . 我的代码如下所示: 我如何实现它? 最佳答案 我解决了。它不会在 Cod
我有一个包含 2 个选择元素和 1 个输入框的侧边栏,它们之间看起来像: 第一个选择元素的最大选项是 0.75x & 在第二个选择元素上是 WEBP . 常量.ts export const pixe
我想让它像 https://tailwindui.com/components/application-ui/overlays/modals 上的第一个模态一样居中 我在下面的 Modal 上复制了相
我是一名优秀的程序员,十分优秀!