当前位置: 代码网 > it编程>前端脚本>Vue.js > Vue3路由组件内的路由守卫onBeforeRouteLeave和onBeforeRouteUpdate使用

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

2024年06月01日 Vue.js 我要评论
简介组件内的路由守卫,实际上就是两个 api 方法。他们与普通的守卫不同的是 : 他们是写在组件内的,在组件中监听路由的变化,不是全局的,比较灵活。以下是两个 api 的功能说明:onbeforero

简介

组件内的路由守卫,实际上就是两个 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 中的 两个组件内的 路由守卫的操作。

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com