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中路由router配置步骤详解

    vue中路由router配置步骤详解

    vue的主要思想是组件化开发,路由用来配置组件对应展示路径,本文给大家介绍vue中路由router配置步骤,创建路由文件——使用路由——配置路由出口,使路由配置内容展示在页面上,感兴趣的朋友跟随小编一起看看吧
    2023-12-12
  • vue2实现移动端上传、预览、压缩图片解决拍照旋转问题

    vue2实现移动端上传、预览、压缩图片解决拍照旋转问题

    这篇文章主要介绍了vue2实现移动端上传、预览、压缩图片解决拍照旋转问题,需要的朋友可以参考下
    2017-04-04
  • Vue3 AST解析器-源码解析

    Vue3 AST解析器-源码解析

    这篇文章我们从 ast 生成时调用的 baseParse 函数分析,再到 baseParse 返回 createRoot 的调用结果,一直到细化的讲解了 parseChildren 解析子节点函数中的其中某一个具体解析器的执行过程。最后通过一个简单模板举例,需要的朋友可以参考下
    2021-09-09
  • vue祖孙组件之间的数据传递案例

    vue祖孙组件之间的数据传递案例

    这篇文章主要介绍了vue祖孙组件之间的数据传递案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • el-table 选择框根据条件设置某项不可选中的操作代码

    el-table 选择框根据条件设置某项不可选中的操作代码

    这篇文章主要介绍了el-table 选择框根据条件设置某项不可选中的操作代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Vue3全局属性app.config.globalProperties的实现

    Vue3全局属性app.config.globalProperties的实现

    Vue3中的app.config.globalProperties是一个强大的全局配置功能,允许我们在应用级别设置和访问属性,本文主要介绍了Vue3全局属性app.config.globalProperties的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Element ui关闭el-dialog时如何清除数据

    Element ui关闭el-dialog时如何清除数据

    这篇文章主要介绍了Element ui关闭el-dialog时如何清除数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Vue项目中是否使用store原理深究

    Vue项目中是否使用store原理深究

    这篇文章主要为大家介绍了在Vue项目中是否使用store原理深究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Vue3.0使用ref和reactive来创建响应式数据

    Vue3.0使用ref和reactive来创建响应式数据

    ref 和 reactive 是 Composition API 中用来创建响应式数据的两个核心函数,在本篇文章中,我们将详细讲解如何使用 ref 和 reactive 来创建响应式数据,并展示它们之间的区别和使用场景,需要的朋友可以参考下
    2024-11-11
  • vue使用v-for循环获取数组最后一项

    vue使用v-for循环获取数组最后一项

    这篇文章主要介绍了vue使用v-for循环获取数组最后一项问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论