componentHelper.js 945 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * @Author: Rindy
  3. * @Date: 2021-08-19 11:02:38
  4. * @LastEditors: Rindy
  5. * @LastEditTime: 2021-08-30 12:22:39
  6. * @Description:
  7. */
  8. import { createVNode, render } from 'vue'
  9. export function mount(component, { props, children, element, app } = {}) {
  10. let el = element
  11. let vNode = createVNode(component, props, children)
  12. if (app && app._context) vNode.appContext = app._context
  13. if (el) render(vNode, el)
  14. else if (typeof document !== 'undefined') {
  15. render(vNode, (el = document.createElement('div')))
  16. }
  17. const destroy = () => {
  18. if (el) render(null, el)
  19. el = null
  20. vNode = null
  21. }
  22. return { vNode, destroy, el }
  23. }
  24. export function setup(...Components) {
  25. Components.forEach(Component => {
  26. Component.install = function (app) {
  27. Component.use && Component.use(app)
  28. app.component(Component.name, Component)
  29. }
  30. })
  31. return Components
  32. }