Skip to content

Modal 模态框 ​

uvx-modal 用于消息提示、操作确认和当前页面内的模态交互,支持异步确认、自定义正文和自定义按钮。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
3.9+4.11+4.61+4.0+4.41+

平台能力 ​

能力AndroidiOS鸿蒙H5微信
标题、正文、确认和取消操作√√√√√
异步确认、关闭图标和遮罩关闭√√√√√
默认插槽、按钮插槽和公开方法√√√√√

使用须知

  1. 组件没有 show 属性,应通过实例的 open() 和 close() 控制显示。
  2. async-close 为 true 时,点击确认只触发 confirm 并进入加载状态;业务完成后应调用 closeLoading(),再按需要调用 close()。
  3. cancel 只在点击取消按钮时触发;右上角关闭、遮罩关闭和方法关闭最终都会在弹层关闭后触发 close。
  4. 使用 confirmButton 插槽后,默认分割线、确认按钮和取消按钮全部被替换,关闭逻辑由插槽内容自行处理。

基础用法 ​

vue
<template>
   <uvx-button text="打开" @click="handleOpen"></uvx-button>
   <uvx-modal
      ref="uModal"
      title="提示"
      content="确认执行当前操作吗?"
      @confirm="handleConfirm"
   ></uvx-modal>
</template>

<script lang="uts" setup>
const uModal = ref<UvxModalComponentPublicInstance | null>(null);

const handleOpen = (): void => {
   uModal.value?.open();
};

const handleConfirm = (): void => {
   console.log("confirm");
};
</script>

显示取消和关闭按钮 ​

vue
<uvx-modal
   ref="uModal"
   title="删除确认"
   content="删除后无法恢复"
   :show-cancel-button="true"
   :show-close-icon="true"
   @cancel="handleCancel"
   @close="handleClose"
></uvx-modal>

异步关闭 ​

vue
<uvx-modal
   ref="uModal"
   title="提交确认"
   content="确认提交当前内容吗?"
   :async-close="true"
   @confirm="handleAsyncConfirm"
></uvx-modal>
uts
const handleAsyncConfirm = (): void => {
   setTimeout((): void => {
      uModal.value?.closeLoading();
      uModal.value?.close();
   }, 2000);
};

自定义正文 ​

默认插槽会替换 content 对应的正文节点。

vue
<uvx-modal ref="uModal" title="图片预览">
   <image src="/static/logo.jpeg" mode="aspectFit"></image>
</uvx-modal>

自定义按钮 ​

vue
<template>
   <uvx-modal ref="uModal" title="提示">
      <template #confirmButton>
         <uvx-button
            text="知道了"
            type="success"
            @click="handleCustomClose"
         ></uvx-button>
      </template>
   </uvx-modal>
</template>

<script lang="uts" setup>
const uModal = ref<UvxModalComponentPublicInstance | null>(null);

/**
 * 关闭自定义按钮的模态框
 * @returns null
 */
const handleCustomClose = (): void => {
   uModal.value?.close();
};
</script>

动画和布局 ​

zoom="false" 时内部居中弹层使用淡入淡出动画。negative-top 向上偏移模态框,width 和 align 控制宽度与正文对齐。

vue
<uvx-modal
   ref="uModal"
   title="提示"
   content="居中显示的正文"
   :zoom="false"
   :negative-top="40"
   width="560rpx"
   align="center"
></uvx-modal>

API ​

Props ​

属性说明类型默认值平台
title标题;空字符串时不渲染标题string""全部
content默认插槽未传入时显示的正文string""全部
confirm-text确认按钮文字,使用组件国际化文本string确认全部
cancel-text取消按钮文字,使用组件国际化文本string取消全部
show-confirm-button是否显示确认按钮booleantrue全部
show-cancel-button是否显示取消按钮booleanfalse全部
show-close-icon是否显示右上角关闭图标booleanfalse全部
confirm-color确认按钮文字和加载图标颜色string""全部
cancel-color取消按钮文字颜色string""全部
button-reverse是否对调确认和取消按钮顺序booleanfalse全部
zoom是否使用缩放动画;关闭后使用淡入淡出booleantrue全部
z-index模态框层级string | number10075全部
async-close确认后是否进入异步加载状态booleanfalse全部
close-on-click-overlay是否允许点击遮罩关闭booleantrue全部
negative-top模态框向上偏移距离string | number0全部
width模态框宽度string | number650rpx全部
align正文对齐方式left | center | rightleft全部
text-style正文文本样式,CSS 字符串string""全部
u-style模态框主体样式,CSS 字符串string""全部
u-class模态框主体追加类名string""全部

Events ​

事件说明参数平台
confirm点击默认确认按钮时触发-全部
cancel点击默认取消按钮时触发-全部
close内部弹层关闭后触发-全部

Slots ​

名称说明平台
default自定义正文;使用后替换 content 文本全部
confirmButton自定义整个按钮区域全部

Methods ​

方法说明参数平台
open()打开模态框并重置确认加载状态-全部
close()关闭模态框-全部
closeLoading()结束异步确认加载状态,不会自动关闭-全部

参考 ​

uvx-ui · uni-app x 组件库