【Vue路由】props配置、replace属性、编程式路由导航、缓存路由组件
创始人
2024-05-05 08:06:12
0

文章目录

  • props配置
    • props值为对象
    • props值为布尔值
    • props值为函数
    • 总结
  • \的replace属性
    • 总结
  • 编程式路由导航
    • 案例实现
    • 总结
  • 缓存路由组件
    • 案例实现
    • 总结

props配置

我们可以看看我们原来如何使用传递过来的参数的:
在这里插入图片描述

我们要写一大长串去从$route身上拿到我们想要的数据,现在我们可以借助props配置简化代码。

props值为对象

在这里插入图片描述
然后我们使用的时候只需要注册一下就可以使用了,和父组件向子组件传递数据的那个props使用方法很相似:
在这里插入图片描述
但是这种方法有一些局限性,那就是传递的都是死数据。所以这种放使用的非常少。

props值为布尔值

在这里插入图片描述
然后我们注册id和title,就可以使用了:
在这里插入图片描述

这个方法的局限性也很明显,那就是只能接收到所有的params参数。你要是用query参数传过来的,那就使用不了

props值为函数

这个函数有一个特点:它可以从形参列表中拿到$route对象,有了$route对象,那我们基本上就可以上天下地无所不能。

在这里插入图片描述

其实这个方法就是把原来我们的代码逻辑移动到了另一个地方,让组件里面的代码不那么冗杂。

我们可以在这个方法的基础上利用js语法的特性使其更加精简:
使用js解构赋值:
在这里插入图片描述
使用解构赋值的连续写法:
在这里插入图片描述

总结

路由的props配置

作用:让路由组件更方便的收到参数

{name:'xiangqing',path:'detail/:id',component:Detail,//第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件// props:{a:900}//第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props(route){return {id:route.query.id,title:route.query.title}}
}

的replace属性

我们可以看到我们的浏览器左上方有前进和后退键(edge只有后退键):
在这里插入图片描述

它是根据浏览器的历史记录进行工作的

我们以我们前文中的案例为例:
在这里插入图片描述

我们依次点击About、Home、News

浏览器的历史记录是采用栈的形式进行记录的,我们产生的历史记录会以push压栈的形式进入到栈中:
在这里插入图片描述
并且有一个指针指向当前所处页面。

我们每点击依次后退,这个指针就会向栈底的方向移动一位,我们现在可以后退三次:
在这里插入图片描述

如果我们再点击前进,指针又会向栈顶移动一位

对历史记录的操作除了push之外还有replace,也就是替换栈顶的一条记录:
在这里插入图片描述

也就是说我们依次点击About、Home、News之后,栈里面只有/home/news的记录。

默认我们的router-link是使用push方式添加历史记录,如果我们想以replace的方式,可以这样:
在这里插入图片描述

总结

的replace属性

  1. 作用:控制路由跳转时操作浏览器历史记录的模式
  2. 浏览器的历史记录有两种写入方式:分别为pushreplacepush是追加历史记录,replace是替换当前记录。路由跳转时候默认为push
  3. 如何开启replace模式:News

编程式路由导航

我们现在实现路由的跳转都是使用router-link标签,但是有的时候我们不能使用router-link,因为我们知道router-link的本质是a标签,如果此时我们是一个按钮,去用router-link进行路由跳转的话,这就造成了结构上的紊乱。

这个时候我们就要借助我们的路由器,去操作我们前面提到过的历史记录栈,来实现跳转。

我们以一个案例来进行说明

案例实现

在这里插入图片描述

因为是在前面的代码基础上进行的升级,所以我们只看看Message组件以及上面的前进后退按钮是怎么实现的。

首先我们要知道:我们自己实现路由跳转必须要借助$router原型对象上的方法:
在这里插入图片描述

Message.vue:


我们push和replace中传入的配置对象和我们在to中传入的对象一模一样。

再来看看我们的前进后退按钮:
Banner.vue:


说明:

这个go方法可以传入两种参数:

  • 如果传入的是正数,则向前进n次
  • 如果传入的是负数,则向后退n次

总结

编程式路由导航

  1. 作用:不借助 实现路由跳转,让路由跳转更加灵活

  2. 具体编码:

    //$router的两个API
    this.$router.push({name:'xiangqing',params:{id:xxx,title:xxx}
    })this.$router.replace({name:'xiangqing',params:{id:xxx,title:xxx}
    })
    this.$router.forward() //前进
    this.$router.back() //后退
    this.$router.go() //可前进也可后退
    

缓存路由组件

我们有的时候希望切换路由的时候,原路由不会被销毁。

例如下面这种情形:
在这里插入图片描述

我们在News组件中的每个li中加一个输入框,我们在输入框中打一个数字,然后我们切换到Message组件,此时我们再次切换回News组件的时候,我们发现我们输入框里面的东西已经没了。这就是因为News路由组件已经被销毁一次,我们使用的时候才创建。

那么我们怎么不让它被销毁呢?

案例实现

我们直接看Home组件(也就是News的父组件):

在这里插入图片描述

说明:

  • 如果不使用include属性,则此处呈现的路由组件都会被缓存
  • include里面放的是组件名
    在这里插入图片描述

    也就是这里的name后面跟的值

总结

缓存路由组件

  1. 作用:让不展示的路由组件保持挂载,不被销毁。

  2. 具体编码:

     
    
    

相关内容

热门资讯

微信安卓系统转苹果系统,轻松实... 你有没有想过,从微信安卓系统转到苹果系统,这中间的转换过程,就像是一场说走就走的旅行,充满了未知和惊...
如何刷安卓8.0系统,安卓8.... 你有没有想过,让你的安卓手机升级到最新的8.0系统,让它焕发出全新的活力呢?别急,今天我就来给你详细...
安卓系统里查看路由,安卓系统下... 你是不是也和我一样,对家里的无线网络充满了好奇?想知道安卓手机里怎么查看路由器信息?那就跟着我一起探...
手机出现安卓系统信号,手机信号... 你有没有发现,最近你的安卓手机信号好像变得特别不稳定呢?是不是觉得有时候信号满格,却还是接不到电话,...
创维安卓系统怎么安装,享受智能... 你家的创维电视是不是最近有点儿不给力,想要给它来个升级,让它焕发新生呢?那就得给它装个安卓系统啦!别...
中兴刷原生安卓系统,原生安卓系... 亲爱的读者们,你是否厌倦了那些千篇一律的安卓系统,想要给你的手机来点新鲜感?今天,就让我带你一起探索...
云系统与安卓系统软件,构建智能... 你有没有想过,你的手机里那些神奇的软件,其实都是靠云系统和安卓系统软件的默契配合才变得如此强大呢?想...
如何禁止安卓系统联网,全方位操... 你有没有想过,你的安卓手机其实是个小宇宙,里面藏着无数的秘密和信息?但是,你知道吗?有时候,这些信息...
a安卓系统不兼容,揭秘a设备的... 最近是不是发现你的安卓手机有些不对劲?比如,某个APP突然罢工了,再比如,你下载了一个新游戏,结果发...
安卓系统刷固件教程,解锁设备潜... 你有没有想过,你的安卓手机其实就像一个隐藏着无限可能的宝藏呢?没错,就是那个你每天不离手的宝贝。今天...
电脑系统安卓界面,功能与美学的... 你有没有发现,现在手机和电脑的界面越来越像了呢?没错,就是那个我们每天都要打交道的好伙伴——安卓界面...
吃鸡王座安卓系统,登顶吃鸡巅峰 你有没有想过,在手机游戏中,谁才是真正的“吃鸡王座”呢?今天,就让我带你一探究竟,看看安卓系统上的那...
安卓点名系统下载,安卓点名系统... 你有没有想过,在繁忙的学习生活中,有没有一种神奇的工具,能让你轻松管理课堂纪律,还能让点名变得如此有...
手机安装通用安卓系统,引领智能... 你有没有想过,为什么你的手机可以安装那么多好玩的应用?秘密就在于它搭载了通用安卓系统!想象一个系统就...
安卓系统仿真器,功能与操作指南 你有没有想过,在电脑上也能玩安卓游戏?没错,这就是安卓系统仿真器的神奇之处!想象你坐在电脑前,手握鼠...
安卓系统可以刷街机,畅享虚拟游... 你知道吗?现在用安卓系统刷街机,简直就像变魔术一样神奇!没错,就是那种让你仿佛穿越回童年,手握游戏杆...
安卓系统画画软件画笔,绘制无限... 你有没有发现,手机里的画画软件越来越丰富啦?尤其是安卓系统上的那些,简直让人眼花缭乱。今天,就让我带...
安卓系统垃圾和缓存,提升使用体... 手机里的安卓系统是不是越来越慢了?是不是觉得打开一个应用都要等半天?别急,今天就来跟你聊聊安卓系统里...
安卓系统图片转入苹果,轻松实现... 你是不是也有过这样的烦恼?手机里存了好多珍贵的照片,突然想换手机,却发现安卓系统的照片怎么也弄不到苹...
华为matebooke装安卓系... 你有没有想过,你的华为MateBook也能装上安卓系统呢?没错,就是那个我们平时手机上用的安卓系统!...