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 相关文章推荐
JS 修改URL参数(实现代码)
Jul 08 Javascript
JavaScript原型链示例分享
Jan 26 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
Aug 02 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
bootstrap侧边栏圆点导航
Jan 11 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 Javascript
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
关于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
PHP新手上路(十三)
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
javascript 模拟点击广告
2010/01/02 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python中set常用操作汇总
2016/06/30 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Django-imagekit的使用详解
2020/07/06 Python
python import 上级目录的导入
2020/11/03 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
生产副总岗位职责
2013/11/28 职场文书
师范生求职信
2014/06/14 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
2014年质检员工作总结
2014/11/18 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python