当前位置:首页 > wifi设置知识 > 正文内容

关于路由钩子进入带参数刷新的信息

秋天2023年02月01日 15:16:08wifi设置知识336

今天给各位分享路由钩子进入带参数刷新的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站

本文内容目录一览:

vue 路由四种方式 (带参数)跳转

replace和push区别:

router.push(location) 会向 history 栈添加一个新的记录,当用户点击浏览器后退按钮时,则回到之前的 URL。

router.replace(location) ,replace 属性(默认值: false),它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

注意:获取路由上面的参数,用的是$route,后面没有r

params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。

params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失。

两者都可以传递参数,区别是什么?

query 传参配置的是path,而params传参配置的是name,在params中配置path无效

query在路由配置不需要设置参数,而params必须设置

query传递的参数会显示在地址栏中

params传参刷新会无效,但是query会保存传递过来的值,刷新不变

路由钩子函数

全局钩子函数:

beforeEach:

beforeEach一共接收三个参数,分别是to、from、next;to:即将进入的路由对象;from:正要离开的路由对象;next:路由的控制参数;

next一共有四种调用方式:

next():一切正常调用这个方法进入下一个钩子;

next(false):取消路由导航,这时的url显示的是正要离开的路由地址;

next('/login'):当前路由被终止,进入一个新的路由导航(路由地址可以自由指定)

next(error):路由导航终止并且错误会被传递到router.onError()注册过的回调中;

我们一般是用全局钩子来控制权限,像什么进页面没有登录就跳登录页,需要用户达到什么级别才能访问当前页面都是属于页面权限控制,都是可以通过beforeEach钩子函数来实现

AfterEach:

AfterEach和beforeEach一样都是属于全局守卫钩子,都是在main.js中进行调用;其中AfterEach比beforeEach少一个next参数;

to:即将要进入的路由对象;

from:正要离开的路由对象;

afterEach()我们一般用来重置页面滚动条位置:

假如我们有一个页面很长,滚动后其中的某个位置后跳转,这时新的页面的滚动条位置就会在上一个页面停留的位置;这个时候我们就可以利用afterEach进行重置:

组件内的钩子函数:

beforeRouteEnter(to,from,next):

在路由进入前调用,因为此时的vue实例还没有创建,所以beforeEnter是唯一一个不能使用this的钩子函数;

to:即将要进入的路由对象;

from:正要离开的路由对象;

next:路由控制参数

beforeRouteUpdate(to,from,next):

在路由发生修改的时候进行调用,比如我们上一篇文章讲到的动态路由传参,这种情况我们的beforeRouteUpdate也是会被调用的;

to:即将要进入的路由对象;

from:正要离开的路由对象;

next:路由控制参数;

beforeRouteLeave(to,from,next):

在路由离开该组件时调用;

to:即将要进入的路由对象;

from:正要离开的路由对象;

next:路由控制参数

注意:beforeRouteEnter因为触发的时候vue实例还没有创建,所以这个钩子函数中不能使用this,而beforeRouteUpdate和beforeRouteLeave都是可以访问到实例的,因为当这两个函数触发的时候实例都已经被创建了;

vue中实现刷新路由

有时候有这样的场景,需要重新加载当前的页面,但不是像刷新浏览器一样刷新整个网站,那样如果有全局保存的数据(比如vuex的数据,当前页面的路由参数)就会重置,所以需要实现刷新当前路由。

实现先说一个属性: router.replace

replace 和 push 用法基本一样,但不会在浏览器留下 history 记录,就是当你使用 replace 访问的路径,通过浏览器的前进后退按钮都访问不到。

实现的方法有点投机取巧,就是建立一个空页面,通过 router.replace 访问,再从空页面使用 router.replace 跳转回来,达到刷新当前路由的效果。下面是基础实现:

先建立一个组件做空页面, refresh.vue :

通过使用组件的路由前置守卫返回上一个页面,需要注意的是在这个守卫中访问不到 this 实例,需要通过在 next 回调中的参数代表平时的 this 。

再建立这个空页面的路由信息:

最后在你需要刷新路由的组件中的方法中访问该路径即可:

这样算是完成一个乞丐投机取巧版的刷新当前路由,这种方法是有瑕疵的,当刷新的路由带有参数, params 或者 query ,通过这个刷新方式之后参数就会丢失,所以需要将上面的方法加以改造一下,让参数页面的参数保持不变,先从需要刷新路由的组件的方法改造:

这样兼容了路由中带有 params 和 query ,先判断了当前路由是否有 params 属性,如果当前路由没有 params 和 query 属性,默认都是空对象,所以传递一个空对象跟没传是一样的。注意路由跳转传递 params 和 query 的方式不相同,传递 params 时,不能使用路由的 path ,需要用到路由 nam e属性,所以上面分了情况进行跳转。这样跳转到写好的空页面,参数是传递给 refresh 这个路由,所以需要再从这个空页面传递回来,下面是改造后的 refresh 组件:

在这个路由守卫中, to 就代表当前页面,也就是 refresh 组件

改造后这个刷新路由的方式就兼容了路由带有参数的情况,目前超人鸭遇到的需求这种方式已经能满足,如果还有其他情况需要再做处理的,或者有更好的实现方法,欢迎指教哦。

路由钩子进入带参数刷新的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、路由钩子进入带参数刷新的信息别忘了在本站进行查找喔。

扫描二维码推送至手机访问。

版权声明:本文由路由设置网发布,如需转载请注明出处。

本文链接:https://www.shoulian.org/luyou/post/4989.html

分享给朋友:

“关于路由钩子进入带参数刷新的信息” 的相关文章

路由器设置怎么没有密码

路由器设置怎么没有密码

本篇文章给大家谈谈路由器设置怎么没有密码,以及路由器没有密码怎么设置密码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文内容目录一览: 1、路由器没密码怎么设置 2、路由器没有密码怎么设置? 3、路由器没有密码是怎么回事? 4、wifi怎么设置为没密码 5、为什么我的路由...

梅林路由器怎么拆卸

梅林路由器怎么拆卸

本篇文章给大家谈谈梅林路由器怎么拆卸,以及梅林路由器怎么拆卸后盖对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文内容目录一览: 1、网件r6900梅林固件怎么设置路由器 2、路由器挂ss教程 3、网件6300v2梅林固件刷好了怎么安装路由器 4、华硕68梅林固件路由器上网怎么...

怎么能看路由器密码

怎么能看路由器密码

有很多朋友不知道怎么能看路由器密码要如何操作,今天为大家整理了很多怎么在路由器上看密码相关的答案,组成一篇内容丰富的文章,希望能到您 本文内容目录一览: 1、如何查看路由器的登录密码 2、华为路由器怎么查看wifi密码? 3、如何查看路由器登录密码? 4、怎么查看wifi密码? 5、...

斐迅路由器怎么重置

斐迅路由器怎么重置

本篇文章给大家谈谈斐迅路由器怎么重置,以及斐讯路由器怎样重置对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文内容目录一览: 1、斐讯(PHICOMM)路由器怎么恢复出厂设置 2、斐讯路由器怎么恢复出厂设置? 3、斐讯K2路由器怎么恢复出厂设置? 4、phicomm路由器怎么重...

迅通路由器怎么设置

迅通路由器怎么设置

针对迅通路由器怎么设置这个问题,本文将综合不同朋友对这个迅达路由器设置的知识为大家一起来解答,希望能帮到大家 本文内容目录一览: 1、怎么路由器的设置步骤 2、路由器怎么设置教程 3、迅捷路由器怎么设置上网 4、路由器怎么设置 5、路由器怎么设置信号 怎么路由器的设置步骤 路由器...

华为怎么修改路由器名称

华为怎么修改路由器名称

今天和朋友们分享华为怎么修改路由器名称相关的知识,相信大家通过本文介绍也能对华为路由器修改名称怎么改有自已的收获和理解。自己轻松搞问题。本文内容目录一览: 1、华为路由器怎么更改wifi名称 2、华为路由器改名字 3、华为路由WS5200怎么修改设备名称 华为路由器怎么更改wifi名称 打...