vue 动态创建组件的两种方法
网络编程 2021-07-04 14:07www.168986.cn编程入门
这篇文章主要介绍了vue 动态创建组件的两种方法,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
Vue动态创建组件实例并挂载到body
方式一
import Vue from 'vue' / @param Component 组件实例的选项对象 @param props 组件实例中的prop / export function create(Component, props) { const p = new (Vue.extend(Component))({ propsData: props }).$mount() document.body.appendChild(p.$el) p.remove = () => { document.body.removeChild(p.$el) p.$destroy() } return p }
方式二
import Vue from 'vue' export function create(Component, props) { // 借鸡生蛋new Vue({render() {}}),在render中把Component作为根组件 const vm = new Vue({ // h是createElement函数,它可以返回虚拟dom render(h) { console.log(h(Component,{ props })); // 将Component作为根组件渲染出来 // h(标签名称或组件配置对象,传递属性、事件等,孩子元素) return h(Component, { props }) } }).$mount() // 挂载是为了把虚拟dom变成真实dom // 不挂载就没有真实dom // 手动追加至body // 挂载之后$el可以访问到真实dom document.body.appendChild(vm.$el) console.log(vm.$children); // 实例 const p = vm.$children[0] // 淘汰机制 p.remove = () => { // 删除dom document.body.removeChild(vm.$el) // 销毁组件 vm.$destroy() } // 返回Component组件实例 return p }
使用
A组件(要动态创建的组件)
<template> <div class="a"> <h2>{{ title }}</h2> <p>{{ data }}</p> </div> </template> <script> export default { props: { title: { type: String, default: "hello world!" }, message: { type: String, default: "o(∩_∩)o 哈哈" }, duration: { type: Number, default: 1000 } }, data() { return { data: "我是a组件", }; }, created() { let num = 1 const timer = setInterval(() => { this.data = num++ }, this.duration) this.$once("hook: beforeDestroy", () => clearInterval(timer)) } }; </script> <style> .a { position: fixed; width: 100%; : 16px; left: 0; text-align: center; pointer-events: none; background-color: #fff; border: grey 3px solid; box-sizing: border-box; } </style>
B组件(操作动态创建组件的地方)
<template> <div class="b"> <button @click="createA">创建</button> </div> </template> <script> import A from "@/ponents/A.vue" import { create } from "@/utils/create.js" export default { ponents: { A, }, methods: { createA() { // 创建A组件,并挂载到body上 create(A, { title: "vue", message: "么么哒😙" }) } }, }; </script>
以上就是vue 动态创建组件的两种方法的详细内容,更多关于vue 动态创建组件的资料请关注狼蚁SEO其它相关文章!
上一篇:vue 实现图片懒加载功能
下一篇:Vue 修改网站图标的方法
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南