更新记录

1.0.1(2026-10-13) 下载此版本

1111

1.0.0(2026-10-13) 下载此版本

新增

  • 首次发布
  • 通用弹窗组件:mode='dialog' 居中对话 / mode='popup' 边侧弹出
  • 内建动作按钮:取消/确认 + 文本/颜色/异步 confirmLoading
  • 三种内容渲染:content 文本属性 / 默认插槽 / #header+#footer 插槽
  • 行为细粒度控制:maskClosable / closeOnConfirm / closeOnCancel / reverseActions
  • 五个弹出位置:top / bottom / left / right / center
  • 通过 v-model:visible 双向绑定显隐
  • 暴露 open / close 方法(Vue3 版 defineExpose)

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- √ - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

ry-modal 通用弹窗组件

作者:Howe

通用弹窗组件:mode='dialog' 走居中对话(标题+内容+按钮),mode='popup' 走边侧弹出(top/bottom/left/right/center)。内建动作按钮、异步 confirm、多插槽,一套 API 覆盖弹窗 + 对话 + 抽屉三场景。

平台支持

平台 是否支持
App(vue) ✓
App(uvue) ✗(不支持)
H5 ✓
微信小程序 ✓
其他小程序 ✓

需要 uni-app x(uvue)版本请使用 ry-modal-x 插件。

安装

三种方式任选其一。

方式一:源码放到 components 目录(推荐)

下载源码后,把组件放到项目的 components/ry-modal/ry-modal.vue,保持该目录结构,即符合 easycom 默认规则,Vue2 / Vue3 均自动注册,无需任何配置。

页面直接写 <ry-modal />。

方式二:手动导入

组件放在其他任意位置时,显式导入注册即可,与 easycom 不冲突(显式导入优先生效):

// <script setup> 中 import 后直接使用,或注册到 components 选项
import ryModal from '@/components/ry-modal/ry-modal.vue'

方式三:uni_modules 导入

通过 HBuilderX 从插件市场导入 uni_modules,组件位于 uni_modules/ry-modal/components/ry-modal/ 下,同样自动注册,无需 import。

使用示例

<template>
  <!-- 1. 简单对话 -->
  <ry-modal v-model:visible="show" title="提示" content="确定删除?" @confirm="onOk"/>

  <!-- 2. 底部弹出(替代 popup) -->
  <ry-modal v-model:visible="show" mode="popup" position="bottom" :show-footer="false">
    <view>自定义内容</view>
  </ry-modal>

  <!-- 3. 异步 confirm:点击后 loading,业务结束后手动关闭 -->
  <ry-modal
    v-model:visible="show"
    :confirm-loading="loading"
    :close-on-confirm="false"
    @confirm="submit"
  />

  <!-- 4. 完全自定义底部 -->
  <ry-modal v-model:visible="show">
    <template #footer>
      <view @click="show = false">我知道了</view>
    </template>
  </ry-modal>
</template>

Props

参数 类型 默认值 说明
visible Boolean false 是否显示(v-model:visible)
mode String 'dialog' 模式:'dialog' / 'popup'
position String 'center' 弹出位置(仅 popup 模式):top/bottom/left/right/center
title String '' 标题文本
content String '' 简单文本内容(dialog 模式无 slot 时使用)
showHeader Boolean true 是否显示头部容器
showClose Boolean true 是否显示关闭按钮
showFooter Boolean true 是否显示底部容器
showCancel Boolean true 是否显示取消按钮
showConfirm Boolean true 是否显示确认按钮
cancelText String '取消' 取消按钮文本
confirmText String '确定' 确认按钮文本
loadingText String '加载中...' 异步加载中文本
cancelColor String #333333 取消按钮文字颜色
cancelBgColor String #f5f5f5 取消按钮背景色
confirmColor String #ffffff 确认按钮文字颜色
confirmBgColor String #007aff 确认按钮背景色
confirmLoading Boolean false 确认按钮是否加载中(加载中时禁止重复点击)
closeOnConfirm Boolean true 点确认后是否自动关闭
closeOnCancel Boolean true 点取消后是否自动关闭
maskClosable Boolean true 点击遮罩是否关闭
maskColor String rgba(0,0,0,0.5) 遮罩颜色
footerAlign String 'right' 底部按钮对齐:left/center/right
reverseActions Boolean false 是否反转取消/确认顺序
width String 'auto' 容器宽度
height String 'auto' 容器高度
maxHeight String '70vh' 内容区最大高度(仅 popup 模式)
borderRadius String '24rpx' 圆角大小
background String #ffffff 容器背景色
zIndex Number 9999 层级
titleColor String #333333 标题颜色
titleSize Number 32 标题字号(rpx)
titleWeight String '700' 标题字重
closeIconColor String #999999 关闭图标颜色
closeIconSize Number 40 关闭图标字号(rpx)
contentColor String #333333 内容文字颜色
contentSize Number 28 内容字号(rpx)
contentAlign String 'center' 内容对齐:left/center/right
btnHeight Number 88 按钮高度(rpx)
btnFontSize Number 30 按钮字号(rpx)

Events

事件名 说明 回调参数
update:visible 显隐同步(v-model:visible) value: Boolean
open 打开后触发 -
close 关闭后触发 -
confirm 点击确认按钮 -
cancel 点击取消按钮 -

Slots

插槽名 说明
default 内容区(dialog 模式若未传,回退到 content 文本属性)
header 替换默认头部(含标题与关闭按钮)
footer 替换默认底部(含取消/确认按钮)

Methods(通过 ref 调用)

方法名 说明
open() 打开弹窗
close() 关闭弹窗

技术支持

  • 微信:howe1144(一定在线,紧急问题首选)
  • QQ 群:415367029(常规问题,群友互助,作者可能在线)
  • ***(很少在线)
  • 插件市场评论区:回复不及时,仅适合不着急的留言反馈

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助 微信赞助

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。