记由创建自定义组件实例需求驱动的vue.extend学习过程
2018-11-21 23:42
761 查看
学习vue.extend纯粹是因为当前项目使用的ui框架不能满足需求,所以使我萌生了自定义组件的念头。自定义组件写完后,又想能够自定义创建组件实例。这样一步一步,接触到了vue.extend。
First
首先要做的当然是先了解vue.extend的作用,通过官方文档API里的说明可以得知
vue.extend(option)
- option的参数是一个包含组件选项的对象
- 返回一个Vue构造器。什么意思呢?看下面代码
[code]import AComponent from path; // 自定义的组件 // 第一种,option为自定义 // 此时baseExtend为构造函数 let baseExtend = vue.extend({ template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>', data: function () { return { firstName: 'Walter', lastName: 'White', alias: 'Heisenberg' } } }); let baseInstance = new baseExtend(); // 创建组件实例 baseInstance.$mount('#mount-point');// 将实例挂载到id位mount-point的元素上 // 第二种,option为导入的组件对象 // 此时baseExtendTwo为AComponent组件的构造函数 let baseExtendTwo = vue.extend(AComponent); let baseInstanceTwo = new baseExtendTwo(); // 创建AComponent组件实例 baseInstanceTwo.$mount('#mount-point');// 将实例挂载到id位mount-point的元素上
看到这里,对vue.extend()的基本用法有了一个了解了,但是上述代码实现中与我想要动态生成一个自定义组件实例不同。官方文档中是事先定义一个id为“mount-point”的元素,然后挂载上去。没有举例如何动态生成一个元素并挂载。所以下一步,我的目标是查看如果将组件实例挂载到动态生成的元素上。
Second
我先去查看了$mount的用法,果不其然有办法。
$mount()中不传参数,将实例渲染为文档之外的元素。渲染为文档之外的元素就相当于createElement了,但是还需要将元素插入到文档中,因此可以将之前的代码修改下。
[code]import AComponent from path; // 自定义的组件 // 第一种,option为自定义 // 此时baseExtend为构造函数 let baseExtend = vue.extend({ template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>', data: function () { return { firstName: 'Walter', lastName: 'White', alias: 'Heisenberg' } } }); let baseInstance = new baseExtend(); // 创建组件实例 baseInstance.$mount();// 将实例挂载到id位mount-point的元素上 document.body.appenChild(baseInstance.$el); // 将实例元素插入body最后 // 第二种,option为导入的组件对象 // 此时baseExtendTwo为AComponent组件的构造函数 let baseExtendTwo = vue.extend(AComponent); let baseInstanceTwo = new baseExtendTwo(); // 创建AComponent组件实例 baseInstanceTwo.$mount();// 将实例挂载到id位mount-point的元素上 document.body.appenChild(baseInstanceTwo.$el); // 将实例元素插入body最后
到这里,自定义组件实例的创建完成了,需求驱动着我的进步。
Summry
- 与使用标签使用组件不同,使用vue.extend与$mount()方法可以动态创建组件。
- 使用$mount()挂载实例时,要记得最后将实例的元素插入至文档中。
相关文章推荐
- Vue学习过程中由自定义组件命名引起的错误
- Vue.js实例学习:组件
- vue学习02 vue-cli 模板创建后的基本结构 及内容组件 指令
- vue插件(自定义组件或js文件使用),vue.extend(),vue.component()注册组件
- vue-cli中如何创建并引入自定义组件
- vue-cli中如何创建并引入自定义组件
- PyQt给组件创建信号并使用自定义信号源码实例
- 7、vue2.0用Vue.extend构建消息提示组件的方法实例实现alert模态框组件(2)
- Vue基础精讲 —— render function创建Vue组件(实例)
- vue自定义组件和列表循环--vue学习笔记
- ZendFramework学习第三章(核心组件—过滤器之创建自定义过滤器)
- 存储过程学习三(创建存储过程实例)
- 带着实例继续学习(2):父子组件通信之自定义事件
- Vue自定义toast组件的实例代码
- Vue学习笔记——实例和内置组件【转自jspang】
- Vue 自定义动态组件实例详解
- Hibernate学习一:配置及简单实例的创建过程
- 学习笔记:创建一个简单字符设备驱动的过程
- winform自定义组件创建失败——未将对象设置引用到实例