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 系统文件夹文件操作及参数介绍
Jan 08 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
js中哈希表的几种用法总结
Jan 28 Javascript
js代码实现随机颜色的小方块
Jul 30 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
vue组件之间的数据传递方法详解
Apr 19 Javascript
vue项目强制清除页面缓存的例子
Nov 06 Javascript
JS 事件机制完整示例分析
Jan 15 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防止跨域提交表单
2013/11/01 PHP
php中异常处理方法小结
2015/01/09 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
JavaScript手机振动API
2016/06/11 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python实现在目录中查找指定文件的方法
2014/11/11 Python
深入理解Javascript中的this关键字
2015/03/27 Python
Python中如何获取类属性的列表
2016/12/26 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
flask 实现token机制的示例代码
2019/11/07 Python
设计师大码女装:11 Honoré
2020/05/03 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
高校教师思想汇报
2014/01/11 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
交通事故协议书
2014/04/15 职场文书
酒店辞职书范文
2015/02/26 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
党支部评议意见
2015/06/02 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
毕业感言怎么写
2015/07/31 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
Redis 限流器
2022/05/15 Redis