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 相关文章推荐
JQuery扩展插件Validate—4设置错误提示的样式
Sep 05 Javascript
自己做的模拟模态对话框实现代码
May 23 Javascript
Js操作Select大全(取值、设置选中等等)
Oct 29 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
Bootstrap Table从零开始
Jun 30 Javascript
最新Javascript程序员面试试题和解题方法
Nov 23 Javascript
详解Angular系列之变化检测(Change Detection)
Feb 26 Javascript
vue+element实现打印页面功能
May 20 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 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面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python后端接收前端回传的文件方法
2019/01/02 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
J2EE相关知识面试题
2013/08/26 面试题
幼儿园开学家长寄语
2014/01/19 职场文书
诚信考试倡议书
2014/04/15 职场文书
优秀求职信
2014/05/29 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
四风问题查摆材料
2014/08/25 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
初中物理教学反思
2016/02/19 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis