当前位置: 首页 > news >正文

vue3 vue-router 导航守卫 (五)

在Vue 3中,导航守卫仍然是一个重要的概念,用于在路由切换时执行一些特定的逻辑。Vue Router提供了多个导航守卫,包括全局守卫、路由独享守卫和组件内守卫。可以在路由切换时执行一些特定的逻辑,例如身份验证、权限控制、数据加载等帮助你更好地控制整个应用程序的导航流程。

文章目录

  • 一、全局前置守卫
  • 二、路由独享守卫
  • 三、全局后置守卫
  • 四、组件内守卫
  • 五、案例

一、全局前置守卫

全局前置守卫会在路由切换之前被调用,并且在所有路由切换中都会被触发

router.beforeEach((to, from, next) => {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换
})

二、路由独享守卫

你也可以为特定的路由定义守卫

const routes = [{path: '/example',component: ExampleComponent,beforeEnter: (to, from, next) => {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换}}
]

三、全局后置守卫

全局后置守卫会在路由切换之后被调用,并且在所有路由切换中都会被触发

router.afterEach((to, from) => {// 在这里执行你的逻辑
})

四、组件内守卫

组件内守卫是针对特定组件的守卫,组件内守卫有3个

注意:beforeRouteEnter在setup语法糖中是无法使用的,需要再起一个script标签 使用defineComponent方式来使用

<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({beforeRouteEnter(to, from, next) {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换},beforeRouteUpdate(to, from, next) {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换},beforeRouteLeave(to, from, next) {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换}
});
</script><script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue';
</script>

五、案例

下面是一个简单的案例,当我们线上考试时,若通过更改浏览器网址到其他地方而没有到交卷页则提醒你正在考试,是否放弃考试。这个时候我们就可以使用组件内守卫来进行逻辑处理。当然,下面的案例只是提供一个简单的组件内守卫适用场景,代码比较粗糙,具体还需要根据项目情况来处理。

<script setup lang="ts">
import { useRoute,useRouter } from "vue-router";
const router = useRouter();const back = async()=>{try {await this.$confirm("你正在考试,是否放弃考试", "确认信息", {distinguishCancelAndClose: true,confirmButtonText: "确定",});try {// await this.toTestResult(true)} catch (e) {router.push({ name: "Home" });}} catch (e) {return false;}}
</script><script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({beforeRouteEnter(to, from, next) {//没有跳到交卷页面提醒if (to.path != "result") {back();} else {next();}},beforeRouteUpdate(to, from, next) {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换},beforeRouteLeave(to, from, next) {// 在这里执行你的逻辑// 通过调用next()来继续路由切换,或者调用next(false)取消路由切换},});
</script>

相关文章:

vue3 vue-router 导航守卫 (五)

在Vue 3中&#xff0c;导航守卫仍然是一个重要的概念&#xff0c;用于在路由切换时执行一些特定的逻辑。Vue Router提供了多个导航守卫&#xff0c;包括全局守卫、路由独享守卫和组件内守卫。可以在路由切换时执行一些特定的逻辑&#xff0c;例如身份验证、权限控制、数据加载等…...

Git命令---查看远程仓库

介绍 使用git命令查看绑定的远程仓库。 命令 git remote -v...

12.8作业

1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…...

算法:有效的括号(入栈出栈)

时间复杂度 O(n) 空间复杂度 O(n∣Σ∣)&#xff0c;其中 Σ 表示字符集&#xff0c;本题中字符串只包含 6 种括号 /*** param {string} s* return {boolean}*/ var isValid function(s) {const map {"(":")","{":"}","["…...

vxworks常用的指令归纳

目的&#xff1a;方便自己查阅 tftpboot 0x10000000 vxworks bootelf 0x10000000 ifconfig "gem0 dowm" ifconfig "gem0 inet 192.168.0.81" ifconfig "gem0 lladdr 01:02:03:04:05:06:07" ifconfig "gem0 up" ld 0,1,"…...

线性回归实战

3.1 使用正规方程进行求解 3.1.1 简单线性回归 公式 &#xff1a; y w x b y wx b ywxb 一元一次方程&#xff0c;在机器学习中一元表示一个特征&#xff0c;b表示截距&#xff0c;y表示目标值。 使用代码进行实现&#xff1a; 导入包 import numpy as np import matp…...

stm32 使用18B20 测试温度

用18b20 测试温度是非常常用的&#xff0c;不过18B20的调试不是这么容易的&#xff0c;有些内容网上很多的&#xff0c;不再重复说了&#xff0c;我先把波形说一下&#xff0c;再说程序部分&#xff1a; 整个都温度数据的顺序是&#xff1a; 1.700uS的低电平复位并测试18B20的…...

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)

一、前言 我们在开发移动端APP的时候&#xff0c;有时可能需要APP能够提供震动功能&#xff0c;以便提醒操作者&#xff0c;特别是ios提供的3D Touch触感功能&#xff0c;操作者操作时会有触感震动&#xff0c;给操作者的感觉很友好。那么&#xff0c;在Delphi的移动端FMX开发中…...

国产Type-C PD芯片—接口快充取电芯片

常用USB PDTYPE-C受电端&#xff0c;即设备端协议IC芯片&#xff08;PD Sink&#xff0c;也叫PD诱骗芯片&#xff09;&#xff0c;诱导取电芯片。 产品介绍 LDR6328: ◇ 采用 SOP-8 封装 ◇ 兼容 USB PD 3.0 规范&#xff0c;支持 USB PD 2.0 ◇ 兼容 QC 3.0 规范&#x…...

pytorch学习6-非线性变换(ReLU和sigmoid)

系列文章目录 pytorch学习1-数据加载以及Tensorboard可视化工具pytorch学习2-Transforms主要方法使用pytorch学习3-torchvisin和Dataloader的使用pytorch学习4-简易卷积实现pytorch学习5-最大池化层的使用pytorch学习6-非线性变换&#xff08;ReLU和sigmoid&#xff09;pytorc…...

详解Keras3.0 Models API: Whole model saving loading

1、save方法 Model.save(filepath, overwriteTrue, **kwargs) 将模型另存为.keras文件 参数说明 filepath: 保存模型的路径。必须以.keras结尾overwrite&#xff1a;布尔值&#xff0c;表示是否覆盖已存在的文件。默认为 True&#xff0c;即覆盖已存在的文件。save_format…...

Spring Cloud Gateway 网关的基础使用

1. 什么是网关&#xff1f;网关有什么用&#xff1f; 在微服务架构中&#xff0c;网关就是一个提供统一访问地址的组件&#xff0c;它解决了内部微服务与外部的交互问题。网关主要负责流量的路由和转发&#xff0c;将外部请求引到对应的微服务实例上。同时提供身份认证、授权、…...

小米手机锁屏时间设置为永不休眠_手机不息屏_保持亮屏

环境&#xff1a;打开手机自带的锁屏时间设置发现没有 永不息屏的选项 原因&#xff1a;采用了三星OLED屏幕&#xff0c;所以根据OLED屏幕特性&#xff0c;这个是为了防止烧屏而特意设计的。非OLED机型支持设置“永不” 解决方案1&#xff1a;原生系统是支持永不锁屏的&#…...

lightdb plorasql集合类型新增可变数组

文章目录 背景集合类型可变数组可变数组示例 背景 在信创适配中&#xff0c;从Oracle迁移过来的存储过程使用到可变数组。因此在LightDB-X 23.4版本中对现有的集合类型进行了增强&#xff0c;添加了可变数组类型。 集合类型 在LightDB-X 23.4版本开始plorasql支持的集合类型…...

算法--最短路

这里写目录标题 xmind单源最短路简介所有边权都是正朴素的Dijkstra算法思想例子题解 堆优化版的Dijkstra算法 存在负数权Bellman-Ford算法思想例子题解 spfa算法思想例子题解 spfa判断负环思想例子题解 多源汇最短路简介弗洛伊德算法思想例子题解 小tips xmind 上述中&#xff…...

Linux 定时任务备份MySQL数据库

Linux 定时任务基本知识 crontab yum install crontabs &#xff08;安装 crontabs&#xff09; systemctl enable crond &#xff08;设为开机启动&#xff09; systemctl start crond&#xff08;启动crond服务&#xff09; systemctl status crond &#xff08;查看状态&a…...

查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息

文章目录 摘要1. 查询CPU使用率命令&#xff1a;top -bn1 | grep \"Cpu(s)\" | awk {split($0,arr,\" \");print 100-arr[8]}2. 查询内存命令&#xff08;单位&#xff1a;G&#xff09;&#xff1a;top -bn1 | grep \"KiB Mem\" | awk {split($…...

外观模式 rust和java的实现

文章目录 外观模式介绍实现javarustrust仓库 外观模式 外观模式&#xff08;Facade Pattern&#xff09;隐藏系统的复杂性&#xff0c;它为子系统中的一组接口提供一个统一的高层接口&#xff0c;使得这些接口更加容易使用。外观模式通过封装子系统内部的复杂性&#xff0c;提…...

uniapp-hubildx配置

1.配置浏览器 &#xff08;1&#xff09;运行》运行到浏览器配置》配置web服务器 &#xff08;2&#xff09;选择浏览器安装路径 &#xff08;3&#xff09;浏览器安装路径&#xff1a; &#xff08;3.1&#xff09; 右键点击图标》属性 &#xff08;3.2&#xff09;选择目标&…...

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。

Nginx Linux系统安装以及反向代理的配置 简介优点nginx 环境安装常用Nginx 命令nginx 文件服务器搭建 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...