当前位置:首页 > uni-app

uniapp 设置弹窗

2026-03-05 07:46:45uni-app

使用 uni.showModal 创建基础弹窗

uni.showModal 是 Uniapp 提供的标准弹窗 API,支持标题、内容、确认和取消按钮的配置。

uni.showModal({
  title: '提示',
  content: '确认执行此操作吗?',
  success(res) {
    if (res.confirm) {
      console.log('用户点击确认');
    } else if (res.cancel) {
      console.log('用户点击取消');
    }
  }
});

参数说明:

  • title:弹窗标题(可选)。
  • content:弹窗内容(必填)。
  • showCancel:是否显示取消按钮(默认 true)。
  • confirmText/cancelText:自定义按钮文字。

自定义弹窗组件

通过 Vue 组件实现高度自定义的弹窗样式和逻辑。

步骤 1:创建组件
新建 components/custom-modal.vue 文件:

<template>
  <view v-if="visible" class="modal-mask">
    <view class="modal-content">
      <slot name="header"></slot>
      <slot name="body"></slot>
      <view class="modal-footer">
        <button @click="onCancel">取消</button>
        <button @click="onConfirm">确认</button>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    visible: Boolean
  },
  methods: {
    onConfirm() {
      this.$emit('confirm');
    },
    onCancel() {
      this.$emit('cancel');
    }
  }
};
</script>

<style>
.modal-mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}
.modal-content {
  background: #fff;
  padding: 20px;
  border-radius: 8px;
  width: 80%;
}
</style>

步骤 2:在页面中使用

<template>
  <view>
    <button @click="showModal = true">打开弹窗</button>
    <custom-modal :visible="showModal" @confirm="handleConfirm" @cancel="showModal = false">
      <template #header>
        <text>自定义标题</text>
      </template>
      <template #body>
        <text>这里是自定义内容</text>
      </template>
    </custom-modal>
  </view>
</template>

<script>
import CustomModal from '@/components/custom-modal.vue';
export default {
  components: { CustomModal },
  data() {
    return {
      showModal: false
    };
  },
  methods: {
    handleConfirm() {
      console.log('确认操作');
      this.showModal = false;
    }
  }
};
</script>

使用第三方组件库(如 uView UI

uView UI 提供了丰富的弹窗组件,简化开发流程。

安装 uView UI

npm install uview-ui

配置 main.js

import uView from 'uview-ui';
Vue.use(uView);

使用弹窗组件

uniapp 设置弹窗

<template>
  <view>
    <u-button @click="showUViewModal">uView 弹窗</u-button>
    <u-modal v-model="showModal" :title="标题" @confirm="confirmCallback">
      <text>这里是内容区域</text>
    </u-modal>
  </view>
</template>

<script>
export default {
  data() {
    return {
      showModal: false
    };
  },
  methods: {
    showUViewModal() {
      this.showModal = true;
    },
    confirmCallback() {
      console.log('点击确认');
    }
  }
};
</script>

注意事项

  1. 性能优化:频繁触发的弹窗建议使用组件而非 uni.showModal,减少渲染开销。
  2. 多端兼容:自定义组件需测试各平台(H5、小程序、App)的样式兼容性。
  3. 遮罩层点击关闭:可通过监听遮罩层点击事件关闭弹窗,增强用户体验。

标签: uniapp
分享给朋友:

相关文章

uniapp使用npm

uniapp使用npm

uniapp中使用npm的方法 uniapp支持通过npm安装和管理第三方依赖包,以下是具体操作步骤: 安装Node.js环境 确保本地已安装Node.js(建议使用LTS版本),安装后会自动包含n…

uniapp隐藏滚动条

uniapp隐藏滚动条

在UniApp中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp使用axios无法请求

uniapp使用axios无法请求

uniapp中使用axios请求问题解决方案 在uniapp中使用axios可能会遇到跨域、请求失败或兼容性问题。以下是常见原因及解决方法: 检查axios安装与引入 确保已正确安装axios:…

uniapp 壁纸

uniapp 壁纸

使用 Uniapp 开发壁纸应用的方法 实现壁纸展示与切换功能 在 Uniapp 中,可通过 swiper 组件实现壁纸轮播展示。结合 image 组件加载本地或网络壁纸资源,动态绑定 src 属性实…

uniapp 绘图

uniapp 绘图

uniapp 绘图方法 使用 Canvas 组件 uniapp 支持通过 canvas 组件实现绘图功能。在模板中声明 canvas 并设置宽度、高度和 ID,通过 JavaScript 调用绘图 A…

uniapp $on

uniapp $on

uniapp $on 方法详解 $on 是 UniApp 中用于监听全局事件的 API,常用于跨页面或跨组件通信。它基于 Vue 的事件机制,允许在全局范围内触发和监听自定义事件。 基本语法…