zoukankan      html  css  js  c++  java
  • vue导航守卫

    一、 全局前置导航守卫         处理所有的路由---->具体栗子 :用户未登录 访问首页  直接next()到登录页面

    1 const router = new VueRouter({ ... })
    2 
    3 router.beforeEach((to, from, next) => {
    4   // ...
    5 })

    三个参数: to  去哪个路由对象   

                       from   从哪个路由对象离开

                        netx()  进行管道中的下一个钩子函数    next(false): 中断当前的导航。next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。

    二、全局后置导航守卫     处理所有的路由

    1 router.afterEach((to, from) => {
    2   // ...
    3 })

    只有两个参数 to  from 没有next()钩子  使用较少

    三、路由内独享的守卫   针对单个路由规则

     1 const router = new VueRouter({
     2   routes: [
     3     {
     4       path: '/foo',
     5       component: Foo,
     6       beforeEnter: (to, from, next) => {
     7         // ...
     8       }
     9     }
    10   ]
    11 })

    这些守卫与全局前置守卫的方法参数是一样的。 只不过是 只对 /foo 路由 规则有效

    四、组件内的守卫  针对单个组件

    • beforeRouteEnter          进入该组件件时调用此路由守卫  ---具体栗子 :用户未登录 访问首页  直接next()到登录页面
    • beforeRouteUpdate (2.2 新增)         在当前路由改变(/foo/1 和 /foo/2 之间跳转的时候
      )会有一个问题   由于该组件被复用   组件没有被销毁   导致写在created钩子函数的数据请求函数只会在页面创建的时候执行一次   跳转的时候不会再次执行请求数据    解决方法  : 在next()钩子函数后面 重新调用请求数据的方法 就可以请求数据
    • beforeRouteLeave          离开该组件件时调用此路由守卫   离开时做一些表单提交的提醒  
     1 const Foo = {
     2   template: `...`,
     3   beforeRouteEnter(to, from, next) {
     4     // 在渲染该组件的对应路由被 confirm 前调用
     5     // 不!能!获取组件实例 `this`
     6     // 因为当守卫执行前,组件实例还没被创建
     7   },
     8   beforeRouteUpdate(to, from, next) {
     9     // 在当前路由改变,但是该组件被复用时调用
    10     // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    11     // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    12     // 可以访问组件实例 `this`
    13   },
    14   beforeRouteLeave(to, from, next) {
    15     // 导航离开该组件的对应路由时调用
    16     // 可以访问组件实例 `this`
    17   }
    18 }
  • 相关阅读:
    linux里终端安转视频播放器的操作及显示
    String字符串操作
    普通类 抽象类 接口
    java基础
    关于window的端口查看及tomcat的端口修改问题
    eclipse的应用和整理
    mysql学习
    echarts的使用
    Failed to read candidate component class
    oracle学习笔记2
  • 原文地址:https://www.cnblogs.com/ndh074512/p/15085073.html
Copyright © 2011-2022 走看看