uni-popup 弹出层 中间弹出 vue3的写法
时间: 2025-05-29 11:12:27 浏览: 15
### 实现 Vue3 中间弹出的 `uni-popup` 组件
在 Vue3 项目中集成并使用 `uni-popup` 组件,可以按照如下方式操作。需要注意的是,在 Vue3 中,由于框架本身的变化,部分 API 和语法也有所调整。
#### 导入依赖库
首先确保已经安装了最新版本的 `uni-app` 及其相关插件。如果尚未完成此步骤,则需先执行 npm 或 yarn 命令来获取所需资源[^1]。
#### 修改入口文件配置
对于基于 Vue3 构建的应用程序而言,应当修改位于项目根目录下的 `main.ts` 文件而不是 `main.js` 。在此处定义全局属性 `$popup` ,以便后续可以在任何地方调用该功能:
```typescript
import { createApp } from 'vue'
import App from './App.vue'
// 引入 UniPopup 插件
import uniPopup from '@/components/uni-popup/uni-popup.vue'
const app = createApp(App)
app.config.globalProperties.$popup = {
show(options){
const instance = new (app.component('UniPopup', uniPopup))({
propsData: options,
mounted(){
this.open()
}
})
document.body.appendChild(instance.$el)
instance.$mount()
},
}
app.mount('#app')
```
上述代码片段展示了如何创建一个新的实例化对象,并将其挂载到 DOM 上;同时传递参数给子组件用于控制显示行为。
#### 使用自定义事件处理逻辑
为了防止背景页面跟随滚动条移动,可在打开对话框之前禁用整个文档的触摸事件监听器,关闭后再恢复默认状态:
```javascript
methods:{
open() {
// 记录当前body样式
let originalStyle = document.body.style.overflow;
// 禁止页面滑动
document.body.style.overflow = "hidden";
this.visible = true;
// 对话框消失时重置样式
this.$once('hook:beforeDestroy', () => {
document.body.style.overflow = originalStyle || '';
});
},
close() {
this.visible = false;
}
}
```
这段 JavaScript 函数实现了当 `open()` 被触发时会临时改变 body 元素上的 overflow 属性值为 hidden 来阻止外部区域被拖拽,而在销毁前又自动还原初始设置[^3]。
#### HTML模板结构
最后一步是在页面内声明好相应的标记语言,这里给出一个简单的例子说明怎样嵌套放置按钮和模态窗口内容:
```html
<template>
<!-- ...其他HTML... -->
<button @click="showDialog">点击查看案例</button>
<uni-popup ref="dialogRef" type="center">
<div class="custom-content">
这里是你想要呈现的具体信息...
</div>
</uni-popup>
<!-- ...更多HTML... -->
</template>
```
以上就是关于如何利用 Vue3 创建居中的 `uni-popup` 并解决伴随而来的交互问题的方法介绍[^2]。
阅读全文
相关推荐


















