命令式弹窗
confirm / alert / prompt 三个独立函数,import 后从任意事件回调里 await 即可——无需 hook、无需挂载组件、不依赖 React 树。需要完整自定义内容的弹窗用 Dialog 组件。
基本用法
confirm 返回 Promise<boolean>(确定 true,取消 / ESC false);alert 返回 Promise<void>;prompt 返回 Promise<string | null>(取消 / ESC 为 null)。
尚未操作
配置继承
弹窗若被包在 OOUIProvider 子树内,会继承该 Provider 的语言、方向与浮层容器等配置;未包裹时按缺省值渲染。消息文案的覆盖方式见 OOUIProvider · 命令式弹窗。
运行时语义
- Promise 在关闭动画播完后才兑现(另加约 50ms 裕量),不是点击按钮的瞬间——
await confirm(...)后立即读 DOM 或跳转,会先等动画播完。 - 弹窗渲染在应用 React 树内,继承所在子树的全部 context;嵌套
OOUIProvider时由最外层的宿主统一渲染全部命令式弹窗(命令式调用没有位置信息,以应用根部的配置渲染最可预期)。 - 重复调用会层叠出多个弹窗、逐个可交互;原版三个 API 共用单窗口管理器,已有窗口打开时第二次调用被拒绝、返回的 Promise 永不兑现。
prompt的输入 框内按 Enter 等同点「确定」(IME 合成期的确认 Enter 除外,textInput.onKeyDown可preventDefault否决);弹窗就绪后自动聚焦输入框(textInput.inputRef由内部占用、传入无效,textInput.value只作初始值)。
API
options(ConfirmAlertOptions / AlertOptions / PromptOptions):
另见
- 弹窗组件本身(
open受控、动作区、多窗隔离):Dialog - 命令式弹窗如何继承 Provider 配置:OOUIProvider
- 多步流程弹窗:ProcessDialog