当前位置:首页 > 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中全局注册组件:

uniapp公共弹窗

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集中管理弹窗状态:

uniapp公共弹窗

// 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倒计时

uniapp倒计时的实现方法 在uniapp中实现倒计时功能可以通过多种方式完成,以下是几种常见的实现方法: 使用setInterval实现基础倒计时 通过JavaScript的setInterva…

uniapp特性

uniapp特性

uniapp的核心特性 跨平台开发 uniapp支持一套代码编译到多个平台,包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序等。开发者无需为不同平台单独编写代码。…

uniapp营销

uniapp营销

营销策略 采用社交媒体推广,结合微信、微博、抖音等平台进行内容营销。通过短视频、直播等形式展示产品特点,吸引用户关注。利用KOL合作,扩大品牌影响力,提高用户信任度。 用户裂变 设计裂变活动,如邀请…

房产uniapp

房产uniapp

房产类UniApp开发指南 UniApp作为跨平台开发框架,适用于快速构建房产类应用(如二手房交易、租房平台、新房展示等)。以下是关键开发要点和实现方法: 技术选型与框架配置 跨平台适配:使用Uni…

uniapp工程

uniapp工程

uniapp工程简介 uniapp是一个基于Vue.js的跨平台开发框架,允许开发者使用一套代码同时生成iOS、Android、H5以及小程序应用。它通过条件编译和平台特性适配,实现多端兼容。 创建…

uniapp 自动打包

uniapp 自动打包

uniapp 自动打包方法 uniapp 支持通过命令行或 CI/CD 工具实现自动化打包,适用于 H5、小程序、App 等平台。以下是常见的自动打包方式: H5 或小程序打包 使用 npm ru…