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怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指