Skip to content

Dialog

Varo 的 Dialog 采用 parts 暴露方式:VDialogRootVDialogTriggerVDialogOverlayVDialogContentVDialogClose

演示

Dialog 跨端示例与演示

Dialog浏览器侧弹层

何时使用

  • 需要模态确认或补充信息展示
  • 需要通过 parts 方式做企业内部二次封装
  • 需要统一 overlay click / escape close 等行为

Anatomy

Dialog 不是单个大组件,而是一组可组合 parts。
  • VDialogRoot 持有 open 状态与受控逻辑。
  • VDialogTrigger 负责打开或切换状态。
  • VDialogOverlay 负责遮罩与点击关闭。
  • VDialogContent 承载弹层内容。
  • VDialogClose 负责显式关闭动作。

小程序封装建议

小程序侧更推荐基于 @varo-ui/headless 再封一层企业内部弹层组件,因为不同小程序容器在 portal 与 overlay 行为上的差异通常更大;tabs 里的示例主要用于对齐统一的交互契约与 parts 组织方式。

Root Props

Prop类型默认值说明
openboolean | undefinedundefined受控打开状态
defaultOpenbooleanfalse非受控初始状态
disabledboolean | undefinedundefined禁止触发打开或关闭行为

Root Events

EventPayload说明
update:openboolean受控模式下同步开关状态
openChangeboolean打开状态变化时触发

Parts 说明

Part作用
VDialogTrigger触发打开或切换
VDialogOverlay蒙层,点击时可关闭
VDialogContent弹层主体内容
VDialogClose显式关闭动作

行为说明

  • 支持受控与非受控两种模式
  • 支持点击 overlay 关闭
  • 支持按 Escape 关闭
  • parts 设计更适合企业内部继续收敛成统一 Modal API

组合建议

推荐组合方式
  • 先在业务侧确定 open 状态是否需要外部控制,再决定是否传入 open
  • 复杂弹层最好把标题区、内容区、底部操作区做成自己的 wrapper,而不是直接在业务里重复拼装。
  • 不同端的 portal 策略可以留在适配层处理,不要把平台分支写进核心交互模型。

无障碍与关闭约定

  • overlay click 与 Escape 关闭行为保持一致
  • 显式关闭动作统一走 VDialogClose
  • 受控模式下由上层决定状态最终是否真正切换

相关文档