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模拟map输出与去除重复项的方法
Feb 09 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
layer弹出层框架alert与msg详解
Mar 14 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
Jul 11 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
Apr 09 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
PHP 7.0.2 正式版发布
2016/01/08 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
div层的移动及性能优化
2010/11/16 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
获取body标签的两种方法
2011/10/13 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
安全演讲稿开场白
2014/08/25 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
党员承诺书范文2015
2015/04/27 职场文书
公司出差管理制度范本
2015/08/05 职场文书
检讨书怎么写?
2019/06/21 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers