Vue.js实战之组件的进阶


Posted in Javascript onApril 04, 2017

一、基本用法

在使用 vue-cli 创建的项目中,组件的创建非常方便,只需要新建一个 .vue 文件,然后在 <template> 中写好 HTML 代码,一个简单的组件就完成了

Vue.js实战之组件的进阶 

一个完整的组件,除了 <template> 以外,还有 <script> 和 <style>

需要注意的是,<script> 中的 data 必须是函数

Vue.js实战之组件的进阶 

然后在其他文件的 js 里面引入并注册,就能直接使用这个组件了

Vue.js实战之组件的进阶

Vue.js实战之组件的进阶

二、使用 slot 分发内容

开发过程中,常常需要在子组件内添加新的内容,这时候可以在子组件内部留一个或者多个插口 <slot>

Vue.js实战之组件的进阶

然后在调用这个子组件的时候加入内容

Vue.js实战之组件的进阶

添加的内容就会分发到对应的 <slot> 中

<slot> 中还可以作为一个作用域,在子组件中定义变量,然后在父组件中自定义渲染的方式

Vue.js实战之组件的进阶 

Vue.js实战之组件的进阶

这个示例中,首先在子组件中添加 <slot>,并在子组件中定义了数组变量 navs

然后在父组件中以作用域 <template> 添加内容,其中 scope 是固有元素,它的值对应一个临时变量 props

而 props 将接收子组件中,所有绑定的属性(如 text)

三、动态组件

Vue 还可以将多个子组件,都挂载在同一个位置,通过变量来切换组件,实现 tab 菜单这样的效果

Vue.js实战之组件的进阶

这样的功能可以通过路由 vue-router 实现,但路由更适合较大的组件,而且 url 会有相应的改变

Vue 自身保留的 <component> 元素,可以将组件动态绑定到 is 特性上,从而很方便的实现动态组件切换

Vue.js实战之组件的进阶

上例中,当 tabView 的值改变,<component> 就会渲染对应的组件,和路由的效果十分类似,但是地址栏并没有发生改变

但这样一来,每次切换组件都会重新渲染,无法保留组件上的数据。这时可以使用 keep-alive 将组件保留在内存中,避免重新渲染

Vue.js实战之组件的进阶

Vue.js实战之组件的进阶 

四、递归组件

当组件拥有 name 属性的时候,就可以在它的模板内递归的调用自己,这在开发树形组件的时候十分有效

Vue.js实战之组件的进阶

上面是一个子组件,定义了 name 为 simple03,然后在模板中调用自身,结合 v-for 实现递归

为了防止出现死循环,在调用自身的时候,加入了 v-if 作为判定条件

父组件中调用的时候,需要通过 props 传入一个 tree:

Vue.js实战之组件的进阶

Vue.js实战之组件的进阶 

最终渲染结果:

Vue.js实战之组件的进阶

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
表单验证的完整应用案例探讨
Mar 29 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
在AngularJS应用中实现一些动画效果的代码
Jun 18 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
JS防止网页被嵌入iframe框架的方法分析
Sep 13 Javascript
javascript使用闭包模拟对象的私有属性和方法
Oct 05 Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
关于axios返回空对象的问题解决
Apr 04 #Javascript
jQuery自定义图片上传插件实例代码
Apr 04 #jQuery
jQuery使用unlock.js插件实现滑动解锁
Apr 04 #jQuery
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 #jQuery
JavaScript实现实时更新系统时间的实例代码
Apr 04 #Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 #jQuery
webpack独立打包和缓存处理详解
Apr 03 #Javascript
You might like
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
小程序云开发实战小结
2018/10/25 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
python发送伪造的arp请求
2014/01/09 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python和opencv实现抠图
2018/07/18 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
Python制作词云图代码实例
2019/09/09 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
表扬信范文
2015/05/04 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
52条SQL语句教你性能优化
2021/05/25 MySQL