路由相关知识

一、$router和$route的区别

解释:

这两个是选项是api的写法(this.$router,this.$route)。

组合式对应的是(useRouter()和useRoute()的返回值)。

$router:

是一个项目中创建的路由对象,管理整个项目的路由(包括:路由模式,路由配置,路由跳转等等),包含有api:push(),go(),back(),addRoute()等等

$route:

当有路由跳转时,会产生该对象,该对象一般是匹配到的路由对象,特指某个路由对象(简单粗暴理解:路由配置中的某个路由配置对象,再加上属性:params,query,meta等等)

二、路由传参

1、路由传参是什么:

路由传参:路由跳转时,从原组件到目标组件的传值。

2、路由传参有什么:

两种方式:params和query

3、两种方式的区别:

1、传参和接参的代码格式

1、params:

需要在路由配置中进行动态路由配置:(路径/:参数)

(1)、传

1、字符串写法
​
<router-link to="/路径/值"></router-link>
​
2、对象写法
​
<router-link :to="{name:'路由的名字',params:{参数名:值}}"></router-link>

(2)、接:

//选项式
this.$route.params.参数名
​
//组合式
const route = useRoute();
route.params.参数名

2、query:

需要在路由配置中进行动态路由配置:(路径/:参数名)

1)、传:

1、字符串写法

<router-link to="/路径?参数名1=值1&参数名2=值2"></router-link>

2、对象写法

<router-link :to="{path:'路由的名字',query:{参数名1:值1,参数名2:值2}}"></router-link>

2)、接:

//选项式
this.$route.query.参数名
​
//组合式
const route = useRoute();
route.query.参数名

2、使用场景

(1)、多个参数:建议使用query,因为地址栏容易阅读,而且不需要写路由配置

(2)、单个参数:一般使用params

三、路由守卫

1、什么是路由守卫

控制组件的跳转,对是否能够进入某个路径对应组件做限制。根据业务逻辑来判定是否可以进入某个组件。

什么时候使用路由守卫:

当进入某个路径,会有限制时。就需要使用路由守卫。

当进入路径时,需要完成通用的业务,也可以使用路由守卫,特别是全局路由守卫

2、路由守卫有哪些分类

(1)、全局守卫

①前置钩子:beforeEach,当地址栏的路径发生变化时,会先调用该钩子函数,再进行进行路由匹配(路由匹配之前调用)。

②后置钩子:afterEach,当路由匹配成功后,先调用该函数,然后才创建组件(路由匹配成功之后)。

(2)、路由独享守卫

①只有前置:beforeEnter:当匹配到某个指定的路由后,会先调用该函数,然后再创建组件。

(3)、组件内部守卫

①前置:beforeRouteEnter:当路由匹配成功后,进入组件前,先调用该函数。

②路径更新,组件复用:beforeRouteUpdate: 当地址栏路径发生变化,但是进入的组件和上一个组件是同样的情况下,会调用先该函数。如:

③离开:beforeRouteLeave:当通过路由的方式离开某个组件前,会调用该函数。

3、路由钩子函数的参数:

to:想去哪个路由,to和$route是同样的对象

from:来自哪个路由对象,from和$route是同样的对象

next:下一步何去何从。

next(true):默认就是true,表示继续前行

next(false):不能前行

next(路径字符串或者对象):跳转到指定的路径。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值