
封装vue的弹窗组件
发布日期:2021-05-07 06:42:54
浏览次数:11
分类:原创文章
本文共 1559 字,大约阅读时间需要 5 分钟。
先写一个工具函数,创建组件实例
// 创建指定组件实例并挂载于body上import Vue from 'vue';export default function create(Component, props) { // 0. 先创建vue实例 const vm = new Vue({ render(h) { // render方法提供给我们一个h函数,它可以渲染VNode return h(Component, { props}) } }).$mount(); // 更新操作 // 1. 上面vm帮我们创建组件实例 // 2. 通过$children获取该组件实例 console.log(vm.$root); const comp = vm.$children[0]; // 3. 追加至body document.body.appendChild(vm.$el); // 4. 清理函数 comp.remove = () => { document.body.removeChild(vm.$el); vm.$destroy(); } // 5. 返回组件实例 return comp;}
Notice组件
<template> <div v-if="isShow"> <h3>{ { title}}</h3> <p>{ { message}}</p> </div></template><script>export default { props: { title: { type: String, default: "" }, message: { type: String, default: "" }, duration: { type: Number, default: "" } }, data() { return { isShow: false }; }, methods: { show() { this.isShow = true; setTimeout(() => { this.hide() }, this.duration); }, hide() { this.isShow = false; this.remove(); } }};</script><style lang="scss" scoped></style>
使用组件的地方
methods: { onLogin() { // 创建弹窗实例 let notice; this.$refs.loginForm.validate(isValid => { notice = create(Notice, { title: "xxx", message: isValid ? "登录!!!" : "有错!!!", duration: 10000 }); notice.show(); }); } }
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月27日 09时13分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
做做Java
2019-03-04
攻防世界新手区pwn
2019-03-04
2020-2021新技术讲座课程
2019-03-04
GIT简介
2019-03-04
eclipse github团队成员修改工程后push推送
2019-03-04
shell中的数学运算
2019-03-04
如何使用4G模块通过MQTT协议传输温湿度数据到onenet
2019-03-04
图解:网络硬件的发展史
2019-03-04
map的find函数和count函数
2019-03-04
C++并发与多线程(一)
2019-03-04
C++ 并发与多线程(五)
2019-03-04
STM32--USART串口收发数据
2019-03-04
逆合成孔径雷成像(一)— 傅里叶变换基础1
2019-03-04
openthread编译错误:error: could not find ctags
2019-03-04
7628 EDCCA认证寄存器修改(认证自适应)
2019-03-04
C#四行代码写简易计算器,超详细带注释(建议新手看)
2019-03-04
计算机网络子网划分错题集
2019-03-04
java一些基本程序
2019-03-04
数据结构之排序
2019-03-04
数据结构经典十套卷之八
2019-03-04