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 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
Dec 15 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
详解JavaScript中常用的函数类型
Nov 18 Javascript
Web安全测试之XSS实例讲解
Aug 15 Javascript
javascript防篡改对象实例详解
Apr 10 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
js监听html页面的上下滚动事件方法
Sep 11 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 Javascript
vue 中的动态传参和query传参操作
Nov 09 Javascript
vue @click.native 绑定原生点击事件
Apr 22 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令牌 Token改进版
2008/07/18 PHP
linux iconv方法的使用
2011/10/01 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
Js apply方法详解
2017/02/16 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
PyTorch安装与基本使用详解
2020/08/31 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
软件工程专业推荐信
2013/10/28 职场文书
廉洁使者实施方案
2014/03/29 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2014年采购部工作总结
2014/11/20 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
Python基础之数据结构详解
2021/04/28 Python
如何正确理解python装饰器
2021/06/15 Python
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技