VueRouter进阶

1.动态路由

Vue项目中,多个页面之间进行切换时,可以复用一个组件,如多次浏览不同的商品,可以重复使用一个商品详情组件,VueRouter提供了动态路由的模式重用一个组件,避免多次组件加载导致的资源浪费

<router-link to='/goods/100'>查看商品100</router-link>
<router-link to='/goods/200'>查看商品200</router-link>
...
{path:'/good/:gid',component:GoodsDetail}
...

接收数据

<p>当前展示的商品编号为{{$route.params.gid}}</p>

2.路由参数

路由之间的参数,都是Get请求格式的参数(路由跳转都是通过页面超链接导航发生的跳转),所以理由之间的参数传递主要有两种方式

1.RESTful风格参数

耦合方式传递参数

<router-link to='/goods/100'>查看商品100</router-link>
<router-link to='/goods/200'>查看商品200</router-link>
{
	{path:'/good/:gid',component:GoodsDetail}
}
<p>当前展示的商品编号为{{$route.params.gid}}</p>

解耦合方式

<router-link to='/goods/100'>查看商品100</router-link>
<router-link to='/goods/200'>查看商品200</router-link>
{
	{path:'/good/:gid',component:GoodsDetail,props:true}
}
<p>当前展示的商品编号为{{gid}}</p>
<script>
...
props:['gid']
...
</script>

2.GET查询字符串参数

耦合方式

<router-link to='/goods?id=100'>查看商品100</router-link>
<router-link to='/goods?id=200'>查看商品200</router-link>
{
	{path:'/good',component:GoodsDetail}
}
<p>当前展示的商品编号为{{route.query.id}}</p>

解耦合方式

<router-link to='/goods?id=100'>查看商品100</router-link>
<router-link to='/goods?id=200'>查看商品200</router-link>
{
	{path:'/good',component:GoodsDetail,props:(route)=>({id:route.query.id})}
}
<p>当前展示的商品编号为{{id}}</p>
<script>
...
props:['id']
...
</script>

3.路由导航守卫

一个路由组件要展示出来,从导航链接被点击开始,项目就开始根据导航链接分派导航组件,知道导航被确认,然后被加载渲染之后才会正确显示,最终再切换到其他组件时离开当前导航组件,这个过程中会经历以下守卫

全局前置守卫:所有的导航链接呗确认之前就会执行:beforeEach(),可以拦截页面跳转
全局解析守卫:当目标导航链接被确认并解析之后执行:beforeResolve(),可以拦截页面跳转
全局后置钩子:目标导航组件已经被渲染结束后执行:afterEach(),不可以拦截页面跳转
路由独享守卫:在路由规则上添加,拦截该路由上的所有请求:beforeEnter(),可以拦截页面跳转
组件内前置守卫:组件内部已经加载时执行的守卫:beforeRouterEnter()
组件内更新守卫:组件内部数据更新时执行的守卫:beforeRouteUptate()
组件内离去守卫:组件在发生切换时,离开组件时执行的守卫:beforeRouterLeave()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值