vue3 组件函数式调用

做一个消息提示框组件,封装成vue实例,然后函数式调用

1、先准备一个想要做的提示组件文件Message.vue        

2、新建Message.js文件,内容是提供一个能够显示Message组件的函数

3、挂载到全局指令上

 

准备一个DOM容器,里面装消息提示组件;然后将组件编译为虚拟DOM,利用render函数渲染到DOM容器里。

// 导入消息提示组件
import { createVNode, render } from 'vue'
import Message from 'message.vue'

// 装载提示消息组件的DOM容器
const div = document.createElement('div')
div.setAttribute('class', 'message-container')
document.body.appendChild(div)

// 定时器标识
let timer = null

export default ({ type, text }) => {
  // 将消息提示组件编译为虚拟节点(DOM节点)
  // createVNode(组件, 属性对象(props))
  const vnode = createVNode(Message, { type, text })
  // 将虚拟节点渲染到DOM容器中
  // render(虚拟节点,DOM容器)
  render(vnode, div)
  // 3s后销毁
  clearTimeout(timer)
  timer = setTimeout(() => {
    render(null, div)
  }, 2000)
}

然后全局注册

export default {
  install (app) {
    // 定义指令
    defineDirective(app)
    app.config.globalProperties.$message = Message
  }
}

使用的时候在文件内先引入

import Message from '@/components/library/Message'

然后使用

 Message({ type: 'error', text: '登录失败' })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值