当前位置:首页 > 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 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是 D…

uniapp隐藏滚动条

uniapp隐藏滚动条

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

uniapp打包

uniapp打包

uniapp打包步骤 H5平台打包 在项目根目录运行以下命令生成H5资源文件: npm run build:h5 打包完成后,文件默认输出到/dist/build/h5目录,可直接部署到Web服务器…

uniapp番号

uniapp番号

关于“uniapp番号”这一搜索词,可能存在理解偏差或表述不明确的情况。以下分方向提供相关信息: Uniapp框架简介 Uniapp是一个基于Vue.js的跨平台开发框架,支持编译到iOS、…

uniapp 3.0

uniapp 3.0

uniapp 3.0 核心特性 uniapp 3.0 是 DCloud 推出的跨端开发框架升级版本,支持一套代码编译到 iOS、Android、Web 及各类小程序平台。以下为关键特性与使用要点:…

uniapp招聘信息

uniapp招聘信息

uniapp招聘现状 目前市场上对uniapp开发者的需求主要集中在移动端跨平台开发领域,许多企业希望招聘能够同时开发iOS和Android应用的全栈人才。招聘岗位通常要求掌握Vue.js框架、熟悉小…