更新记录
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(常规问题,群友互助,作者可能在线)
- ***(很少在线)
- 插件市场评论区:回复不及时,仅适合不着急的留言反馈
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 | 微信赞助 |
|---|---|
![]() |
![]() |

收藏人数:
下载插件并导入HBuilderX
赞赏(0)


下载 0
赞赏 0
下载 12674413
赞赏 1955
赞赏
京公网安备:11010802035340号