使用高级 Chakra UI 组件更快地构建 💎

了解更多
跳到内容
文档演练场指南博客
赞助

叠加管理器

用于编程控制叠加组件

用法

函数createOverlay 创建一个可以编程控制的新叠加组件。

import { createOverlay } from "@chakra-ui/react"

const dialog = createOverlay<DialogProps>((props) => {
  const { title, description, content, ...rest } = props
  return (
    <Dialog.Root {...rest}>
      <Portal>
        <Dialog.Backdrop />
        <Dialog.Positioner>
          <Dialog.Content>
            {title && (
              <Dialog.Header>
                <Dialog.Title>{title}</Dialog.Title>
              </Dialog.Header>
            )}
            <Dialog.Body spaceY="4">
              {description && (
                <Dialog.Description>{description}</Dialog.Description>
              )}
              {content}
            </Dialog.Body>
          </Dialog.Content>
        </Dialog.Positioner>
      </Portal>
    </Dialog.Root>
  )
})

然后渲染 Viewport 组件以查看叠加层。

<dialog.Viewport />

示例

对话框

这是一个可以编程控制的对话框组件示例。

抽屉

这是一个可以编程控制的抽屉组件示例。

更新

使用 .update 方法更新叠加层的属性。

返回值

等待 .open() 方法的结果将返回传递给 .close() 方法的值。

信息
额外提示: 你还可以使用 .waitForExit() 方法来等待退出动画完成,然后再打开一个新的叠加层。

API

属性

通过 createOverlay 函数注入到叠加组件中的属性

  • open: 叠加层当前是否打开
  • onOpenChange: 当叠加层的打开状态改变时触发的回调
  • onExitComplete: 当叠加层的退出动画完成时触发的回调

方法

视口

渲染所有活动叠加层的根组件。

open(id, props)

使用给定的 ID 和属性打开一个新的叠加层。返回一个解析为任何值的 Promise。

close(id, value)

使用给定的 ID 关闭叠加层,并返回一个在关闭时解析的 Promise。

update(id, props)

使用给定的 ID 更新叠加层的属性。

remove(id)

使用给定的 ID 移除叠加层。

removeAll()

移除所有叠加层。

get(id)

获取使用给定 ID 的叠加层的属性。

getSnapshot()

获取叠加层的当前快照。

waitForExit(id)

等待使用给定 ID 的叠加层的退出动画完成。

上一个

区域设置提供者

下一个

存在