vue路由钩子拦截器beforeEach和afterEach及页面路由变化路由监听

在路由跳转的时候,我们需要一些权限判断或者其他操作。这个时候就需要使用路由的钩子函数。

定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数。

总体来讲vue里面提供了三大类钩子,两种函数 1、全局钩子 2、某个路由的钩子 3、组件内钩子

两种函数:

1. router.beforeEach(function(to,form,next){}) /*在跳转之前执行*/

2. router.afterEach(function(to,form)}{}) /*在跳转之后判断*/
全局钩子函数

顾名思义,它是对全局有效的一个函数

// router.js

const
router = new Router({ routes: [ { path: '/', name: 'sideBar', component: sideBar, children:[ { path:'/', name:'sort', component:sort }, { path:'/addNewSort', name:'addNewSort', component:addNewSort }, { path:'/notSend', name:'notSend', component:notSend }, { path:'/sended', name:'sended', component:sended }, } ] }) router.beforeEach((to,from,next)=>{ // console.log("to:",to); // router即将进入的路由对象 // console.log("from:",from); // 当前导航即将离开的路由 // console.log("next:",next); // Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。 if(to.name=='notSend'){ next({ name:'sort' }) return } next() }) export default router
某个路由的钩子函数

顾名思义,它是写在某个路由里头的函数,本质上跟组件内函数没有区别。

// router.js

const
router = new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login,
      beforeEnter: (to, from, next) => {
        // ...
      },
      beforeLeave: (to, from, next) => {
        // ...
      }
    }
  ]
})
路由组件的钩子

可以在路由组件内直接定义以下路由导航钩子

// *.vue

beforeRouteEnter beforeRouteUpdate (
2.2 新增) beforeRouteLeave

这里简单说下钩子函数的用法:它是和data,methods平级的。

beforeRouteLeave(to, from, next) {
    next()
},
beforeRouteEnter(to, from, next) {
    next()
},
beforeRouteUpdate(to, from, next) { // 用于相同路由组件的的参数更新
    next()
},
data:{},
method: {}

 

转载于:https://www.cnblogs.com/xiaoyaoxingchen/p/9537174.html

在学习Vue监听器、生命周期、组件通信和路由的过程中,我也遇到了一些问题。以下是我遇到的一些问题以及解决方法: 1. 监听器无法正常工作:有时候我发现我的监听器无法正确地追踪数据的变化。这可能是因为我没有正确地定义监听器或者没有在正确的地方使用它们。解决方法是仔细检查监听器的定义和使用位置,并确保它们被正确地绑定到Vue实例上。 2. 生命周期钩子函数执行顺序:理解Vue的生命周期钩子函数执行顺序可能会有一些困惑。有时候我会在不同的钩子函数中执行相同的操作,但由于执行顺序不同,结果可能出乎意料。解决方法是仔细研究Vue官方文档中有关生命周期钩子函数执行顺序的说明,并根据需要调整代码逻辑。 3. 组件通信方式选择:在处理组件通信时,有时候我会犹豫选择props还是自定义事件。这取决于数据流的方向以及组件之间的关系。解决方法是仔细考虑数据流的需求,并根据情况选择合适的通信方式。如果是父组件向子组件传递数据,可以使用props;如果是子组件向父组件通知事件,可以使用自定义事件。 4. 路由配置错误:在配置Vue路由时,我有时会遇到路由无法正确匹配或者导航到指定页面的问题。这可能是因为我没有正确地定义路由规则或者导航链接的路径有误。解决方法是仔细检查路由配置和导航链接,并确保它们的路径是正确的。 5. 路由导航守卫问题:在使用路由导航守卫时,我可能会遇到一些逻辑上的困惑。例如,在`beforeEach`导航守卫中如何正确地处理异步操作或者如何根据条件进行路由拦截。解决方法是仔细研究Vue官方文档中关于导航守卫的说明,并根据需要使用合适的钩子函数和逻辑来处理路由拦截和操作。 总的来说,对于遇到的问题,我会仔细研究Vue官方文档和相关资料,并利用搜索引擎寻找解决方案。另外,参与Vue社区和论坛也是获取帮助和解决问题的好途径。不断学习和实践是掌握Vue监听器、生命周期、组件通信和路由的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值