index.js 959 B

1234567891011121314151617181920212223242526272829
  1. import mMessage from './index.vue';
  2. import { h, render } from 'vue-demi';
  3. export default ({text, type, timeout, icon, textColor, bgColor, customClass,center,showClose}) => {
  4. const div =
  5. typeof document !== 'undefined'
  6. ? typeof document.createElement !== 'undefined'
  7. ? document.createElement('div')
  8. : ''
  9. : ''
  10. div.setAttribute('class', 'm-message-container')
  11. if (typeof document !== 'undefined') {
  12. document.body.appendChild(div)
  13. }
  14. let timer = null
  15. // 传递给组件的选项
  16. // h() 函数是一个用于创建 VNode 的实用程序,它接受三个参数
  17. const vnode = h(mMessage, { text, type, timeout, icon, textColor, bgColor, customClass,center,showClose }, () =>[text])
  18. render(vnode, div)
  19. if(timeout === 0) return
  20. timer = setTimeout(() => {
  21. render(null, div)
  22. if (typeof document !== 'undefined') {
  23. document.body.removeChild(div)
  24. }
  25. clearTimeout(timer)
  26. },timeout || 3000)
  27. }