前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue封装共用弹窗组件

vue封装共用弹窗组件

原创
作者头像
愤怒的小鸟
修改2021-01-21 17:47:27
1.6K0
修改2021-01-21 17:47:27
举报
文章被收录于专栏:web share

1. 实现方法

  • vue.extend 函数可以生成一个 组件构造器 可以用这个函数构造出一个 vue组件实例
  • 可以用 document.body.appendChild() 动态的把组件加到 body里面去
  • vue.prototype.$toast = showToast  可以在全局注册组件
  • 显示动画比较简单,隐藏动画必须要在隐藏之前预留足够的动画执行时间

2. 实现动态加载组件

代码语言:javascript
复制
import vue from 'vue'
// 这里就是我们刚刚创建的那个静态组件
import toastComponent from './toast.vue'

// 返回一个扩展实例构造器
const ToastConstructor = vue.extend(toastComponent)
// 定义弹出组件的函数 接收2个参数, 要显示的文本 和 显示时间
function showToast(text, duration = 2000) {  // 实例化一个 toast.vue
  const toastDom = new ToastConstructor({    
    el: document.createElement('div'),
    data() {      
      return {        
        text:text,        
        show:true
      }
    }
  })  
  // 把 实例化的 toast.vue 添加到 body 里
  document.body.appendChild(toastDom.$el)  
  // 过了 duration 时间后隐藏
  setTimeout(() => {
    toastDom.show = false
  } ,duration)
}

// 注册为全局组件的函数
function registryToast() {  
  // 将组件注册到 vue 的 原型链里去,
  // 这样就可以在所有 vue 的实例里面使用 this.$toast()
  vue.prototype.$toast = showToast
}

export default registryToast

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 实现方法
  • 2. 实现动态加载组件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档