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 相关文章推荐
javascript调试说明
Jun 07 Javascript
屏蔽script注入小例子
Nov 12 Javascript
javascript操作select元素实例分析
Mar 27 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
jquery实现的动态回到顶部特效代码
Oct 28 Javascript
jQuery实现图片滑动效果
Mar 08 Javascript
微信小程序手势操作之单触摸点与多触摸点
Mar 10 Javascript
JavaScript实现简单动态进度条效果
Apr 06 Javascript
Koa日志中间件封装开发详解
Mar 09 Javascript
fastadmin中调用js的方法
May 14 Javascript
用vue 实现手机触屏滑动功能
May 28 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
浅析PHP中Collection 类的设计
2013/06/21 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python解析中国天气网的天气数据
2014/03/21 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python 负数取模运算实例
2020/06/03 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
社团成立邀请函
2014/01/08 职场文书
高中体育教学反思
2014/01/24 职场文书
医务人员自我评价
2014/01/26 职场文书
挂职自我鉴定
2014/02/26 职场文书
电子信息工程自荐信
2014/05/26 职场文书
学校安全防火方案
2014/06/07 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
质量保证书格式模板
2015/02/27 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书