vue-router相关(持续更新中)

文章目录

  • router-view
    • router-view的嵌套
    • router.addRoute
      • 复杂嵌套实例
  • 总结

router-view

<router-view></router-view>

router-view 是Vue Router中的一个组件,用于渲染匹配到的路由组件。它是用来显示当前路由对应的组件内容的占位符。 即当前路由组件会在占位符对应位置显示出来。
<router-view></router-view> 标签将会根据当前路由的路径匹配到相应的路由组件,并将其内容渲染在这个位置。

router-view的嵌套

<router-view></router-view>中嵌套一层<router-view></router-view>标签可以用来渲染路由的子路由。
可以在不同的层级使用 <router-view> 来渲染每个嵌套路由对应的组件。外部的 <router-view> 负责渲染父级路由的组件,而位于父组件内部的内部 <router-view> 负责渲染子级路由的组件。

假设你有一个父级路由 /home 和一个子级路由 /home/profile 。当用户导航到 /home 时,与 /home 路由关联的组件将在外部的 <router-view> 中渲染。然后,如果用户导航到 /home/profile ,与 /home/profile 路由关联的组件将在父组件内部的内部 <router-view> 中渲染。

router.addRoute

router.addRoute 可以动态添加一条新路由。

router.addRoute(route: RouteConfig): () => void

router.addRoute 还可以为现有路由添加子路由。

router.addRoute(parentName: string, route: RouteConfig): () => void

复杂嵌套实例

采用动态路由的方式添加路由,根据后端返回的路由信息动态渲染路由菜单,根据路由信息在不同的 <router-view> 位置加载不同的组件
系统静态路由如下:

export const staticRouter: RouteRecordRaw[] = [{path: "/",redirect: HOME_URL},{path: LOGIN_URL,name: "login",component: () => import("@/views/login/index.vue"),meta: {title: "登录"}},{path: "/layout",name: "layout",component: () => import("@/layouts/index.vue"),// component: () => import("@/layouts/indexAsync.vue"),redirect: HOME_URL,children: []}
];

通过调用api获取路由信息,json数据如下:

{"code": 200,"data": [{"path": "/home/index","name": "home","component": "/home/index","meta": {"icon": "HomeFilled","title": "首页","isLink": "","isHide": false,"isFull": false,"isAffix": true,"isKeepAlive": true}},{"path": "/test/vslot","name": "vslot","component": "/test/vslot-test/a","meta": {"icon": "Histogram","title": "vslot-test","isLink": "","isHide": false,"isFull": false,"isAffix": false,"isKeepAlive": true}}

使用router.addRoute动态添加路由
authStore.flatMenuListGet方法用于获取每一个路由,并且将子路由合并成一维数组,即做数组扁平化处理
通过判断item.meta.isFull,如果是false,则为layout的子路由,在内部 <router-view> 中显示,如果是true,则直接加入路由中,与layout同级,在第一层 <router-view> 中显示,即覆盖全屏

import router from "@/routers/index";
import { useAuthStore } from "@/stores/modules/auth";/*** @description 初始化动态路由*/
export const initDynamicRouter = async () => {const authStore = useAuthStore();try {  authStore.flatMenuListGet.forEach(item => {item.children && delete item.children;if (item.component && typeof item.component == "string") {item.component = modules["/src/views" + item.component + ".vue"];}if (item.meta.isFull) {router.addRoute(item as unknown as RouteRecordRaw);} else {router.addRoute("layout", item as unknown as RouteRecordRaw);}});} catch (error) {// 当按钮 || 菜单请求出错时,重定向到登陆页userStore.setToken("");router.replace(LOGIN_URL);return Promise.reject(error);}
};

则最终的效果是在app.vue中有一个 <router-view> 占位符,会渲染Login、layout等组件,在layout内部的Main组件中嵌套一个 <router-view> 占位符,则会渲染layout组件的子路由,包括动态加入的路由

总结

即通过 <router-view> 的嵌套,实现了父路由和其children数组中路由对应组件的对应显示位置及效果,当前路由切换时,如果是子路由,则只会在内部的 <router-view> 部分进行更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年8月份华为H12-811更新了

801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案&#xff1a;A 试题解析&#xff1a;在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…

【CSS】CSS 选择器

CSS 选择器 1.基础选择器 1.1 元素选择器 语法&#xff1a;标签名{...} 元素选择器会选中对应标签名的HTML元素&#xff0c;例如&#xff1a;p{...}&#xff0c;div{...}&#xff0c;span{...}等 1.2 类选择器 语法&#xff1a;.类名{...} 类选择器会选中class属性为指定…

配置两台数据库为主从数据库模式

一、主库配置 1、修改配置文件 /etc/my3306.cnf #mysql服务ID&#xff0c;保证整个集群环境中唯一&#xff0c;默认为1server-id1#是否只读&#xff0c;1代表只读&#xff0c;0代表读写read-only0#忽略的数据&#xff0c;指不需要同步的数据库#binlog-ignore-dbmysql#指定同步…

OSPF作业3

题目 地址配置 R1&#xff1a; R2&#xff1a; R3&#xff1a; R4&#xff1a; R5&#xff1a; R6&#xff1a; R7&#xff1a; R8&#xff1a; R9&#xff1a; R10&#xff1a; R11&#xff1a; R12&#xff1a; 私网通及LSDB优化 R1&#xff1a; ospf 1 router-id 1.1.1.1 …

基于Matlab实现图像拼接技术(附上完整源码+图像)

图像拼接是数字图像处理中一个重要的问题&#xff0c;它的目标是将多张图像拼接成一张更大的图像。图像拼接技术在许多领域中都有广泛的应用&#xff0c;如全景图像拼接、医学图像拼接、遥感图像拼接等。 本文将介绍一种基于Matlab实现的图像拼接技术&#xff0c;即基于特征匹…

【图论】强连通分量进阶

一.作用 强连通分量可以判断环和进行缩点。还有一系列作用.... 这篇文章介绍缩点 二.题目 https://www.luogu.com.cn/problem/P2341 三.思路 我们分析可以知道当一个点没有出度时&#xff0c;则为最受欢迎的牛。但如果有多个出度&#xff0c;则没有最受欢迎的牛。 这是只有…

AcWing 93:递归实现组合型枚举 ← DFS

【题目来源】https://www.acwing.com/problem/content/95/【题目描述】 从 1∼n 这 n 个整数中随机选出 m 个&#xff0c;输出所有可能的选择方案。【输入格式】 两个整数 n&#xff0c;m&#xff0c;在同一行用空格隔开。【输出格式】 按照从小到大的顺序输出所有方案&#xf…

python多任务笔记

多任务介绍 在现实生活中&#xff0c;有很多的场景中的事情是同时进行的&#xff0c;比如跳舞和唱歌是同时进行的。 在程序中&#xff0c;可以使用代码来模拟唱歌和跳舞的功能&#xff1a; from time import sleep def sing(): for i in range(3): print("正在唱歌...…

win10 安装 tensorflow-gpu 2.10.0

win10 安装 tensorflow-gpu 2.10.0 系统配置 系统 win10 x64 显卡 GTX 1660 Ti CUDA 12.2 cudnn 8.9 查看版本对应&#xff1a; https://tensorflow.google.cn/install/source_windows#gpu VersionPython versionCompilerBuild toolscuDNNCUDAtensorflow_gpu-2.10.03.7-3.…

为独立服务器增加安全性的简单步骤

为独立服务器增加安全性的简单步骤 马上注册成为ROSABC会员&#xff0c;随时发帖回复。 您需要 登录 才可以下载或查看&#xff0c;没有账号&#xff1f;会员注册 x 独立服务器是您业务的中心&#xff0c;它需要尽可能的安全。对企业中心的攻击可能会导致您失去知识产权&…

【TypeScript】交叉类型联合类型(四)

【TypeScript】交叉类型&联合类型&#xff08;四&#xff09; 【TypeScript】交叉类型&联合类型&#xff08;四&#xff09;一、简介二、交叉类型2.1 交叉类型使用的注意点2.2 基本数据类型交叉2.3 对象类型交叉 三、联合类型四、类型缩减 一、简介 TypeScript 中的交…

[英语单词] password, passphrase, passport.... paraphrase

password 是密码&#xff0c;大多可能就是一个单词的量&#xff0c;10多个字母&#xff0c;或者更少&#xff1b;而且就是一个单词&#xff1b; 后来发现密码这么设置不安全&#xff0c;怎么办&#xff1f; 就出现了passphrase&#xff0c;使用词组的组合来做为密码&#xff0c…

用于实体对齐的联合学习实体和关系表示2019 AAAI 8.7

用于实体对齐的联合学习实体和关系表示 摘要介绍相关工作实体对齐图卷积网络 问题公式我们的方法整体架构初步实体对齐图卷积层近似关系表示联合实体和关系对齐 实验总结 摘要 实体对齐是在不同知识图之间集成异构知识的一种可行方法。该领域的最新发展通常采用基于嵌入的方法…

Neo4j笔记-数据迁移(导出/导入)

这里先说明以下几点&#xff1a; Neo4j在4.0下版本默认的库名是&#xff1a;graph.db Neo4j在4.0上版本默认的库名是&#xff1a;neo4j.db 不管是Neo4j&#xff0c;还是Neo4j Desktop&#xff0c;都会在bin目录下有neo4j、neo4j-admin软件。在conf目录下&#xff0c;有neo4j.…

【状态估计】一维粒子滤波研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

代理模式(C++)

定义 为其他对象提供一种代理以控制(隔离&#xff0c;使用接口)对这个对象的访问。。 应用场景 在面向对象系统中&#xff0c;有些对象由于某种原因(比如对象创建的开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问等)直接访问会给使用者、或…

el-tree 懒加载数据,增删改时局部刷新实现

1.数据过多时进行懒加载孩子节点&#xff0c;根据层级传参获取后端孩子数据 懒加载主要部分&#xff1a; 1参数: :load"loadNode" lazy :props"defaultProps" 2.defaultProps 需要设置isLeaf: isLeaf,去除最后一层孩子节点的展开图表 defaultProps: { ch…

Pytorch迁移学习使用MobileNet v3网络模型进行猫狗预测二分类

目录 1. MobileNet 1.1 MobileNet v1 1.1.1 深度可分离卷积 1.1.2 宽度和分辨率调整 1.2 MobileNet v2 1.2.1 倒残差模块 1.3 MobileNet v3 1.3.1 MobieNet V3 Block 1.3.2 MobileNet V3-Large网络结构 1.3.3 MobileNet V3预测猫狗二分类问题 送书活动 1. MobileNet …

解释器模式-自定义语言的实现

有时&#xff0c;我们希望输入一串字符串&#xff0c;然后计算机能够按照预先定义的文法规则来对这个字符串进行解释&#xff0c;从而实现相应的功能。 例如&#xff0c;我们想实现简单的加减法接收器&#xff0c;只需输入一个表达式&#xff0c;它就能计算出表达式结果。比如…

纯C语言实现的Luhn算法(信用卡校验位):详解与示例

Luhn算法,也被称为“模10算法”,是一种简单的校验和公式,用于验证各种标识号码,如信用卡号码。Luhn算法是由IBM科学家Hans Peter Luhn发明的。这种算法在全球范围内被广泛应用于各种场合,其中最常见的就是信用卡号码的校验。 在本文中,我们将详细介绍如何使用纯C语言实现…