首页 > 编程知识 正文

vuerouter钩子函数,vue的路由钩子函数

时间:2023-05-04 08:34:04 阅读:146070 作者:1116

vue-router作为vue中最基础的服务,学习一段时间,总结面临的需求

已经配置了使用vue-cli作为开发前提的vue-router

路由的写法

routes: [

{

path: '/cart ',

name: 'cart ',

组件: Cart,

meta :{ title: '购物车' }//用于指定页面名称

}

]

虚路由器路由跳转的方法

第一个:编程式导航

耳机通道

//to是prop。 也可以指定要跳转的路径,或使用v-bind动态设置

//tag可以指定呈现为标签,默认值为a标签

跳回去

//这样的写法不会留下历史的痕迹,返回键无效

用户

///product/1

第二个:函数表达式导航

//现在,假设我跳至产品页面并带有参数id

//在此将list.id定义为动态值

写为this.$ router.push ('./product/' list.id ) /字符串

this.$ router.push ({ name : ' product ',Params3360 ) id:list.id} ) /描述命名路由的方式

直接定义this.$ router.push ({ path : `/product/$ { list.id } ` } ) path类似于第一类

//常用的跳转路由方法

//如果带查询参数

router.push(path:'product ',query: ) id:list.id ) )///product? id=1

由于此方法会将新记录添加到history堆栈中,因此用户单击浏览器的“后退”按钮将返回到上一个URL。

单击害羞的冬瓜时,此方法会在内部调用,因此单击与调用router.push(…)相同。

需要注意的是,如果提供了path,则params配置无效

有几种方法

使用与方法名称相同的——替换当前history记录,而不是将新记录添加到router.replace//history中

在router.go(1)//浏览器记录中继续前进,则为history.forward ) )

router.go(-1 )//后退一步记录,与history.back )相同

router.go(n )//浏览器记录前进三步

基本的使用量就这么多

如果需要命名视图路由重定向等,请访问官方网站

基本知识大概就这么多

现在让我们谈谈两个导航卫士——after each before each——的区别

顾名思义,vue-router提供的导航卫士主要用于在跳转或取消时保护导航。 在全局、单一路由或组件级别,路由导航过程有各种机会。

记住参数或查询的更改不会触发进入/退出导航触发。

在全球卫士中

beforeEach全球前卫

当触发导航时,全局前卫将按创建顺序调用。

每个防护方法接收三个参数。

to: Route:即将访问的目标路由对象

from: Route:当前要退出导航的路由

next: Function:必须始终调用此方法来对此挂接进行resolve。 执行效果取决于next方法的调用参数。

router.beforeeach((to,from,next )={

控制台. log (to; //即将进入的路由对象

控制台. log (from; //导航当前要离开的根对象

next (; //可以调用此方法进入下一个挂接

() )

//这样写的话,各个参数的意思就会变得很清楚

next ) ) :进行管道内的下一个挂钩。 执行所有挂接后,导航状态已确认。

next(false ) :中断当前导航。 如果浏览器的URL发生更改(用户可能手动或按下了浏览器的后退按钮),则URL地址将重置为与from根目录对应的地址。

next((/)或next ) ) path: )/) ) :跳到另一个地址。 当前导航中断,进行新的导航。 可以将任意位置的对象传递给next,并可以设置replace: true、name: 'home '等选项以及router-link上的toprop或router.push使用的选项

使其调用next方法。 否则,钩子不会被解析

afterEach全球后钩

router.aftereach((to,from )={

//.

() )

但是,与保护不同,这些挂接不接受next函数,也不改变导航本身

从使用的角度来看,前台挂钩更常用,如登录认证和在Vue单页中引用规定页面名称

router.beforeeach((to,from,next )={

if(to.meta.title ) {

document.title=to.meta.title; //在路由中写入的元中的title字段

}

next (;

() )

组件中的门卫请看官方网站的例子

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。