vue3 route meta字段扩展

news/2025/2/22 10:31:22

使用 vue 路由时,我们经常会将一些字段信息附加到路由的 meta 对象里面,比如权限信息,菜单显示控制信息等,如下:

const routes = [
  {
    path: '/posts',
    component: PostsLayout,
    children: [
      {
        path: 'new',
        component: PostsNew,
        // 只有经过身份验证的用户才能创建帖子
        meta: { requiresAuth: true }
      },
      {
        path: ':id',
        component: PostsDetail
        // 任何人都可以阅读文章
        meta: { requiresAuth: false }
      }
    ]
  }
]

而在使用时,只需要判断这个元数据字段是否存在即可:

import {useRoute} from "vue-router";
    

const route = useRoute()

if (route.meta.requiresAuth){
   // do something
}

注意这个时候,如果TS类型严格检查情况下,编译器会报错,找不到 requiresAuth 字段的定义,这个时候为了避免报错,我们可以通过扩展 RouteMeta 接口来输入 meta 字段,方法如下:

1,在项目根目录下,新建一个 augmentations.d.ts 文件

2,放入如下配置:

export {}

declare module 'vue-router' {
    interface RouteMeta {
        // is optional
        activeMenu?: boolean
        // must be declared by every route
        showSide?: boolean
        requiresAuth?: boolean
    }
}

3, 在 tsconfig.json 的 include 选项中配置能够扫描到这个增强文件即可:

  "include": [
    "src/**/*.ts",
    "src/**/*.d.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "./*.d.ts", // 可以扫描到根目录下的所有 d.ts 结尾的文件
    "./auto-imports.d.ts",
    "node_modules/unplugin-auto-import/auto-imports.d.ts",
  ]

4,完成之后,TypeScript 的类型检查就不会报错了


http://www.niftyadmin.cn/n/5089508.html

相关文章

RabbitMQ概述原理

RabbitMQ是一种消息队列中间件,其主要作用是在应用程序之间传输数据。它基于AMQP(高级消息队列协议)实现,可以用于不同语言和不同操作系统之间的通信。 RabbitMQ的工作原理是生产者将消息发送到队列中,消费者从队列中接…

[ spring boot入门 ] java: 错误: 无效的源发行版:17

因为我目前idea中使用的是jdK8,而在pom.xml文件里是17,所以我需要将所有地方修改为jdk8 pom.xml的jdk版本为8 maven的setting.xml文件 jdk为8 还有Java Compiler 还有Project Structure 里面的project 和 module

【23】c++设计模式——>责任链模式

责任链模式定义 C中的责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它通过将请求沿着处理对象的链传递来避免把请求发送者与接收者耦合在一起。 责任链模式的主要思想是,通过将多个处理对象组成一条链&…

值得拥有的 12 大最佳照片恢复软件 [持续更新]

由于误删、损坏、病毒攻击等原因,您可能会丢失珍贵的照片。幸运的是,市场上有专业的照片恢复工具。但是,根据您的需要找到合适的照片恢复软件的任务可能压力很大。为了帮助您做出正确的决定,我们精心挑选了您可以信赖的收费最高的…

thymeleaf,bootstrap-fileinput 多文件上传

组件遍历上传 一、前端 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org" > <head><th:block th:include"include :: header(修改固定资产信息)" /><th:block th:include"include :: date…

【数据库系统概论】第四章数据库安全性

数据库的安全性&#xff1a;保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 grant和revoke语法

无法启动此程序,因为计算机中丢失MSVCR71.dll的详细解决修复方法

大家好&#xff01;今天我来给大家分享一下msvcp71.dll丢失的修复方法。 首先&#xff0c;让我们来了解一下msvcp71.dll文件。msvcp71.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2010 Redistributable Package所包含的一个文件。这个文件被许多软件和游戏需…

项目管理之六大目标及成功方程式

项目管理的六大目标分别是范围、质量、时间、成本、收益和风险。在项目开始之前&#xff0c;需要明确了解项目的范围&#xff0c;并在项目执行过程中对范围进行严格控制&#xff0c;确保项目不偏离既定的范围。同时&#xff0c;需要明确项目的质量标准和预期成果&#xff0c;然…