Vue3路由组件内的路由守卫onBeforeRouteLeave和onBeforeRouteUpdate使用

 更新时间:2024年05月08日 10:39:16   作者:NorthCastle  
这篇文章主要介绍了Vue3路由组件内的路由守卫onBeforeRouteLeave和onBeforeRouteUpdate使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

简介

组件内的路由守卫,实际上就是两个 API 方法。

他们与普通的守卫不同的是 : 他们是写在组件内的,在组件中监听路由的变化,不是全局的,比较灵活。

以下是两个 API 的功能说明:

  • onBeforeRouteLeave() : 守卫在当前路由离开时触发,例如 :从 /c 跳转到 /a
  • onBeforeRouteUpdate(): 守卫在当前路由发生改变时触发,例如 : 从 /c/100 跳转到 /c/200

案例

本案例演示上述两个 API 的基本使用,没有太多的逻辑操作。

路由配置

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'

// 引入组件
import componentA from "./componentA.vue";
import componentC from "./componentC.vue";

// 声明路由跳转的路径与组件的对应关系
const routsList = [
    {path:'/a',name:'aroute',component:componentA},
    {
        path:'/c/:id',
        name:'croute',
        component:componentC
    }

]

// 创建路由的实例对象
const routerConfigObj = createRouter({
    history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀
    routes:routsList // 指定路由的配置列表
})

// 导出路由的对象
export default routerConfigObj;

组件C 中的API 使用代码(核心)

<template>
    <div class="divb">
        这是组件C 
        <br>
        <button @click="goToA">跳转到组件a</button>
        <br>
        <button @click="goToC200">更新到组件c200</button>
    </div>
    
</template>

<script setup lang="ts">

    // 引入路由相关的 API
    import {useRouter} from 'vue-router';

    // 声明 路由对象和当前路由对象
    const routeObj = useRouter()

    // 点击按钮,跳转到组件a
    const goToA = ()=>{
        routeObj.push({
            path:'/a'
        })
    }

    // 更新到组件c 200
    const goToC200 = ()=>{
        routeObj.push({
            path:'/c/200'
        })
    }


    // 导入两个组件内的路由守卫API
    import { onBeforeRouteLeave,onBeforeRouteUpdate } from 'vue-router';

    // 路由离开时的操作
    onBeforeRouteLeave((to,from)=>{
        console.log('组件c : onBeforeRouteLeave - to :',to);
        console.log('组件c : onBeforeRouteLeave - from :',from);
        alert('当前内容未保存,是否继续离开?')
    })


     // 路由更新时的操作
     onBeforeRouteUpdate((to,from)=>{
        console.log('组件c : onBeforeRouteUpdate - to :',to);
        console.log('组件c : onBeforeRouteUpdate - from :',from);
        alert('即将跳转到 /c/200,请稍等')
    })

</script>

<style scoped>
    .divb{
        width: 200px;
        height: 100px;
        background: rgb(23, 177, 182);
    }
</style>

运行效果1:路由跳转

运行效果2:路由更新

总结

以上就是 组合式API 中的 两个组件内的 路由守卫的操作。

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue如何动态获取当前时间

    vue如何动态获取当前时间

    这篇文章主要介绍了vue如何动态获取当前时间问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 使用vant-uploader上传照片无法删除的解决

    使用vant-uploader上传照片无法删除的解决

    这篇文章主要介绍了使用vant-uploader上传照片无法删除的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue实现列表垂直无缝滚动

    vue实现列表垂直无缝滚动

    这篇文章主要为大家详细介绍了vue实现列表垂直无缝滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue处理emoji表情占位符的操作方法

    vue处理emoji表情占位符的操作方法

    在计算字符数时,一般情况下,英文字符、数字和大部分符号都可以被视为占一个字符长度,因为它们是单个字节,然而,对于某些特殊字符,如表情符号和部分非英文字符,会被认为占据了多个字符长度,本文给介绍了vue处理emoji表情占位符的操作方法,需要的朋友可以参考下
    2024-06-06
  • 前端vue如何使用pptxgen.js导出PPT

    前端vue如何使用pptxgen.js导出PPT

    最近公司项目有个导出ppt的功能,在使用ppexgen.js一周完成功能之后,这篇文章主要给大家介绍了关于前端vue如何使用pptxgen.js导出PPT的相关资料,需要的朋友可以参考下
    2024-01-01
  • vue3.0 加载json的方法(非ajax)

    vue3.0 加载json的方法(非ajax)

    这篇文章主要介绍了vue3.0 加载json的方法(非ajax),帮助大家更好的理解和学习vue,感兴趣的朋友可以了解下
    2020-10-10
  • 详解element-ui级联菜单(城市三级联动菜单)和回显问题

    详解element-ui级联菜单(城市三级联动菜单)和回显问题

    这篇文章主要介绍了详解element-ui级联菜单(城市三级联动菜单)和回显问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • vue通过element树形控件实现树形表格

    vue通过element树形控件实现树形表格

    这篇文章主要为大家介绍了vue element树形控件实现树形表格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • vue-router二级导航切换路由及高亮显示的实现方法

    vue-router二级导航切换路由及高亮显示的实现方法

    这篇文章主要给大家介绍了关于vue-router二级导航切换路由及高亮显示的实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • vue select 获取value和lable操作

    vue select 获取value和lable操作

    这篇文章主要介绍了vue select 获取value和lable操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论