vue3挂载全局弹窗
vue2中使用$mount和extend实时挂载组件到全局,具体可以参考 使用$mount和extend扩展vue
在vue3中提供了一个更为方便的函数createApp,具体实现如下:
// 引入createApp函数和App类型
import { createApp, type App } from 'vue'
// 引入popup组件
import Popup from './popup.vue'
let popupInstance:any = null
// install方法,可被app.use()使用
export default function install (App: App) {
initialize()
// 挂载到全局变量上
App.config.globalProperties.$popup = popupOpen
}
// 手动调用显示
export function popupOpen(params: any) {
if (popupInstance === null) {
initialize()
}
// 赋值参数
// popupInstance.....
popupInstance.show = true
}
function initialize() {
// 创建Popup实例
const instance = createApp(Popup)
// 挂载到dom上
const box = document.createElement('div')
document.body.appendChild(box)
popupInstance = instance.mount(box)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
上次更新: 2025/09/05, 8:09:00