当前位置:首页 > uni-app

uniapp公共弹窗

2026-02-05 21:46:15uni-app

实现全局弹窗组件

在uniapp中实现公共弹窗可以通过自定义组件方式完成。创建一个全局组件,在需要的地方调用。

创建components/popup/popup.vue文件:

<template>
  <view class="popup-mask" v-if="show" @click="close">
    <view class="popup-content" @click.stop>
      <slot></slot>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    show: {
      type: Boolean,
      default: false
    }
  },
  methods: {
    close() {
      this.$emit('update:show', false)
    }
  }
}
</script>

<style>
.popup-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom:  0;
  background-color: rgba(0,0,0,0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 999;
}
.popup-content {
  background-color: #fff;
  border-radius: 10rpx;
  padding: 30rpx;
  width: 80%;
}
</style>

全局注册组件

main.js中全局注册组件:

import Vue from 'vue'
import popup from '@/components/popup/popup.vue'

Vue.component('popup', popup)

页面中使用弹窗

在任何页面中可以直接使用:

<template>
  <view>
    <button @click="showPopup = true">打开弹窗</button>
    <popup :show.sync="showPopup">
      <view>这里是弹窗内容</view>
      <button @click="showPopup = false">关闭</button>
    </popup>
  </view>
</template>

<script>
export default {
  data() {
    return {
      showPopup: false
    }
  }
}
</script>

通过Vuex管理弹窗状态

对于复杂应用,可以使用Vuex集中管理弹窗状态:

// store.js
export default new Vuex.Store({
  state: {
    popupVisible: false,
    popupContent: ''
  },
  mutations: {
    showPopup(state, content) {
      state.popupVisible = true
      state.popupContent = content
    },
    hidePopup(state) {
      state.popupVisible = false
    }
  }
})

通过方法调用弹窗

创建全局弹窗服务:

// utils/popup.js
export default {
  show(content) {
    uni.$emit('showPopup', content)
  },
  hide() {
    uni.$emit('hidePopup')
  }
}

在App.vue中监听:

<script>
export default {
  created() {
    uni.$on('showPopup', (content) => {
      this.$store.commit('showPopup', content)
    })
    uni.$on('hidePopup', () => {
      this.$store.commit('hidePopup')
    })
  }
}
</script>

使用时直接调用:

import popup from '@/utils/popup.js'

popup.show('自定义内容')
// 关闭
popup.hide()

注意事项

组件样式需要根据实际需求调整,包括动画效果、位置等。对于多弹窗场景,可以扩展组件支持不同类型弹窗。弹窗内容可以通过插槽或props灵活传递。

uniapp公共弹窗

标签: uniapp
分享给朋友:

相关文章

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的…

uniapp极光推送

uniapp极光推送

uniapp极光推送集成步骤 准备工作 注册极光推送开发者账号,创建应用获取AppKey。确保uniapp项目已配置好原生插件支持。 安装插件 在uniapp项目manifest.json文件中,选…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

uniapp实现标题栏渐变

uniapp实现标题栏渐变

实现标题栏渐变的方法 在UniApp中实现标题栏渐变效果,可以通过修改页面的导航栏样式或使用自定义导航栏来实现。以下是几种常见的方法: 方法一:使用原生导航栏渐变 通过修改pages.json…

uniapp指南

uniapp指南

开发环境搭建 下载HBuilderX作为官方推荐的开发工具,支持Windows和Mac系统。安装后创建uni-app项目,选择模板(如默认模板、Hello Uni-app等)。确保Node.js版本在…

丸子uniapp

丸子uniapp

丸子UniApp简介 丸子UniApp是一个基于UniApp框架开发的移动应用解决方案,通常用于快速构建跨平台应用(如微信小程序、H5、Android/iOS等)。其核心特点是利用UniApp的“一次…