Skip to content

[Bug]: weapp Dialog 是 Vue h() 适配器,wevu 页面无法按文档使用 #9

Description

@daguanren21

版本

@varo-ui/weapp@2.0.0@varo/primitives-weapp(当前 main)。

问题

文档和 Registry 把 Dialog 暴露为 VDialogRoot / VDialogTrigger / VDialogOverlay / VDialogContent / VDialogClose,并声称支持 weapp。weapp 实际实现是 defineComponent + h(),从 vue 导入生命周期和 document 键盘事件。

wevu 页面是原生 SFC + 小程序节点。业务按文档写:

<VDialogRoot v-model:open="open">
  <VDialogOverlay />
  <VDialogContent>协议</VDialogContent>
</VDialogRoot>

在微信开发者工具里不能得到系统确认框那种居中双按钮 Dialog,也无法作为可安装的 wevu SFC 使用。Registry 只复制同一个 dialog.ts 到 h5 和 weapp,weapp 没有独立 weapp-vite.vue parts。

对比 Overlay:weapp 目标复制的是 v-overlay.vue(wevu SFC)。Dialog 没有对等产物。

复现

  1. 在 wevu + weapp-vite 项目安装 components/dialog
  2. 登录页未勾选协议时打开确认层,结构对齐猫箱系统 Dialog:标题、说明、不同意 / 同意。
  3. 用微信开发者工具打开该页。

预期

weapp 目标应提供 wevu SFC parts(或等价原生节点实现):

  • VDialogRoot 持有 open 状态
  • VDialogOverlay 使用 view 遮罩
  • VDialogContent 居中白底面板
  • VDialogClose 关闭动作

不要依赖 document.addEventListener('keydown')。原生微信运行时没有这个能力,文档自己也写了。

实际

  • @varo/primitives-weapp/src/dialog/index.tsvue 导入 defineComponent / h / onMounted
  • onMounted 里监听 documentEscape
  • Registry dialog.ts h5 / weapp 共用一份 render-function 包装
  • 业务只能改用手写 overlay,或退回 wx.showModal

建议

给 weapp 增加独立 SFC parts,Registry 按 Overlay 的方式复制 v-dialog-*.vue。保留 headless useDialogRoot 状态机。不要在 weapp 适配器里碰 document

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions