官方关于<router-link> 的 v-slot的相关介绍:
https://router.vuejs.org/zh/api/#router-view-%E7%9A%84-v-slot
并给出了一个例子:

<router-view v-slot="{ Component, route }"><transition :name="route.meta.transition || 'fade'" mode="out-in"><keep-alive><suspense><template #default><component:is="Component":key="route.meta.usePathKey ? route.path : undefined"/></template><template #fallback> Loading... </template></suspense></keep-alive></transition>
</router-view>

但对于初学者在刚开始了解vue或者刚开始入手和摸索学习的时候看到上面的例子应该多少有些懵,上面的{ Component, route }是什么东西,是怎么来的是自己定义的吗?

但你看到前面的v-slot,实际上他就是对应vue的插槽。
参考官方文档:https://v3.cn.vuejs.org/guide/component-slots.html,你不难发现它就是作用域插槽下的 解构插槽 Prop,官方给出的例子也类似于v-slot="{ Component, route }"的写法。实际上就是让router-view的插槽能够访问子组件中的数据,访问的数据就是Component和route 。

官方给出Component和route的解释:

  • Component: 要传递给<component> 的 VNodes 是 prop。
  • route: 解析出的标准化路由地址。

我们再去参考vue组件基础中的动态组件,你不难发现,其实有相关的介绍:

<component :is="currentTabComponent"></component>

在上述示例中,currentTabComponent 可以包括:

  • 已注册组件的名字,或
  • 一个组件选项对象
<component:is="Component":key="route.meta.usePathKey ? route.path : undefined"
/>

而上面的router-view插槽中的Component就是一个组件选项对象,如果你在浏览器的控制台查看,它类似于下面的结构:

而route就是RouteLocationNormalized,你可以获取RouteLocationNormalized中的参数,比如meta中你自定义的内容。假如,你在meta定义了一个参数cacheable,用来区分是否需要缓存组件,你就可以做如下操作:

<router-view v-slot="{ Component, route }"><keep-alive v-if="Component"><component :is="Component" v-if="route.meta.cacheable"></component></keep-alive><component :is="Component" v-if="!route.meta.cacheable"></component>
</router-view>

而关于keep-alive,大家可以参考,在动态组件上使用-keep-alive。当在某些组件之间切换的时候,你有时会想保持这些组件的状态,以避免反复渲染导致的性能问题,我们更希望那些已经打开的组件实例能够被在它们第一次被创建的时候缓存下来。为了解决这个问题,我们可以用一个<keep-alive> 元素将其动态组件包裹起来。

而suspense看官方介绍是一个新增的功能,具体参考:https://v3.cn.vuejs.org/guide/migration/suspense.html
是一个试验性的新特性,用来在正确渲染组件之前进行一些异步操作。目前不推荐在生产使用。

总结:
就单纯看<router-view> v-slot这个事例就简单几行代码,但它需要我们把vue的基础和深入组件掌握好,要不看起来就比较懵,不知道什么意思。

浅析<router-view> v-slot事例相关推荐

  1. Android中onClick(DialogInterface dialog,int which)函数和onClick(View v)函数

    今天在学习安卓教程中遇到了一个小问题,问题虽小,却困扰了我很久,查了很多资料才解决.在这里写出来跟大家分享,希望可以对大家有所帮助. 运行工程时,跳出一个对话框"Activity06 has ...

  2. vue进入页面执行的钩子函数_深入理解Vue 的钩子函数

    前言 说到Vue的钩子函数,可能很多人只停留在一些很简单常用的钩子( created , mounted ),而且对于里面的区别,什么时候该用什么钩子,并没有仔细的去研究过,且Vue的生命周期在面试中 ...

  3. Android中View绘制流程以及invalidate()等相关方法分析

                                                                                                        ...

  4. Android Loader机制全面详解及源码浅析

    原文出处:csdn@工匠若水,http://blog.csdn.net/yanbober/article/details/48861457 一.概述 在Android中任何耗时的操作都不能放在UI主线 ...

  5. Android的消息处理机制——Looper,Handler和Message浅析

    题外话: 说来有些惭愧,对于这三者的初步认识居然是在背面试题的时候.那个时候自己接触Android的时间还不长,学习的书籍也就是比较适合入门的<疯狂Android讲义>,当然在学到Hand ...

  6. Android在View拉丝工艺和invalidate()和其他相关方法

    转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 . 同 ...

  7. android 动画 alpha,浅析Android 动画之AlphaAnimation应用操作

    作为程序员不管是为了什么,或多或少都会模仿其他人的一些手法来达到效果,程序员都必须要做出各种绚丽的动画画面来吸引大家,下面是爱站技术频道小编浅析 动画之AlphaAnimation应用操作,一起来了解 ...

  8. Android View - RemoteViews

    设计Android的工程师起名字还是挺规范的,而且一眼就知道是什么意思.RemoteViews,顾名思义,远程的View.Android为了能让进程A显示进程B的View,设计了这么一种View(其实 ...

  9. JavaScript设计模式浅析

    JavaScript设计模式浅析 JavaScript设计模式浅析 一.工厂模式 1.简单的工程模式 2.工程模式实例 二.建造者模式 1.建造者模式例子 三.单体模式 1.普通创建对象方式 2.单体 ...

最新文章

  1. 使用Java企业级技术开发大型系统(3)
  2. CSS结构选择器四种结构关系的范围
  3. centos6.5下载卸载mysql,centos 6.5卸载Mysql
  4. html提交表单到Servlet
  5. js实现当前导航菜单高亮显示
  6. golang连接mysql报错:this authentication plugin is not supported 解决方案
  7. 单臂路由实验-VTP
  8. 超市管理系统java swing+mysql报告_基于java+swing+mysql的超市管理系统
  9. Windows Azure Storage (10) Windows Azure 上的托管服务CDN (下) Hosted Service
  10. Mozilla官方:Firefox 3.5.1问题并非安全漏洞 仅是堆溢出Crash
  11. 购物车商品计算JavaScript实现
  12. SAP CRM WebClient UI BSP customized theme storage table
  13. java中的starts_Java Math类静态double nextAfter(double starts,double direction)示例
  14. [c#]获取exchange中的图片
  15. spring security 的 logout 功能
  16. 模板 - 数论 - 整除分块
  17. shell脚本循环嵌套
  18. 安装office2010常见的提示错误解决办法
  19. 2018.8.18梦中的凶杀案
  20. The Open Group即将举办线上线下企业架构从业者峰会

热门文章

  1. 2019计算机学院年会主持稿,2019年学术年会主持稿-范文汇编.doc
  2. 关于值班表的前端显示
  3. sublime 集成 markdown 插件【小明同学】
  4. 计算机房 增加电脑,(完整版)学生计算机房(电脑室)使用须知
  5. 计算机专业黑话,互联网行业黑话大全
  6. 跟我学springboot(二十五)springboot-过滤器之拦截不需要走过滤器的链接使用方法
  7. 宝塔面板隐藏网站服务器真实IP
  8. 如何通过在FMC上为FTD下发PBR以及FMC如何为FTD开启traceroute回显
  9. Android Gradle 技巧之二: 最爱命令行
  10. Python学习--Day07--正则表达式