Vue3 动态路由、动态组件使用示例

9a69fede8b2044a79dd834e3e48f20b4.png前期回顾f8e3cc1a0f694ac2b665ca2ad14c49d7.png

Vue3 + TS + Vite —— 大屏可视化 项目实战_vue3可视化大屏_彩色之外的博客-CSDN博客大屏可视化项目实战_vue3可视化大屏https://blog.csdn.net/m0_57904695/article/details/131014666?spm=1001.2014.3001.5501

目录

👍  动态组件

 👀 动态路由


👍  动态组件

效果图:

 

代码示例: 

<script lang="ts" setup>
import { defineAsyncComponent, ref } from 'vue';// 需要加载的组件集合
const components = ref(new Map<string, any>());
components.value.set('MyTag',defineAsyncComponent(() => import('./a.vue'))
);
components.value.set('Item',defineAsyncComponent(() => import('./b.vue'))
);// 默认加载的组件名
const compName = ref('MyTag');
// 组件切换
function onClick() {if (compName.value === 'MyTag') {compName.value = 'Item';} else {compName.value = 'MyTag';}
}
</script><template><div><el-button @click="onClick">改变组件</el-button><component :is="components.get(compName)"></component></div>
</template><style lang="scss" scoped></style>

 


 

 👀 动态路由


import { createRouter, createWebHistory } from 'vue-router';
import axios from 'axios';const routes = [// 默认路由{path: '/',name: 'Home',component: () => import('@/views/Home.vue'),},
];const router = createRouter({history: createWebHistory(),routes,
});// 在路由跳转之前获取菜单数据并动态添加路由
router.beforeEach(async (to, from, next) => {// 判断是否已经获取到菜单数据if (router.getRoutes().length <= 1) {try {// 发起请求获取菜单数据const response = await axios.get('/api/menu');const menu = response.data;// 根据菜单数据动态生成路由generateRoutes(menu);// 添加新生成的路由router.addRoute(menu);// 继续路由跳转next({ ...to, replace: true });} catch (error) {console.error('无法获取菜单数据:', error);}} else {// 已经获取到菜单数据,继续路由跳转next();}
});// 根据菜单数据动态生成路由
function generateRoutes(menu) {menu.forEach((item) => {const route = {path: item.path,name: item.name,component: () => import(`@/views/${item.component}.vue`),};// 递归生成子路由if (item.children && item.children.length > 0) {route.children = generateRoutes(item.children);}routes.push(route);});
}export default router;

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

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

相关文章

Java支付SDK接口远程调试 - 支付宝沙箱环境【公网地址调试】

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转载自cpolar极点云文章&#xff1a;Java支付宝沙箱环境支付&#xff0c;SD…

解密Docker容器网络

一个Linux容器能看见的“网络栈”&#xff0c;被隔离在它自己的Network Namespace中。 1 “网络栈”的内容 网卡&#xff08;Network Interface&#xff09;回环设备&#xff08;Loopback Device&#xff09;路由表&#xff08;Routing Table&#xff09;iptables规则 对于一…

97、基于stm32单片机智能药箱药盒温湿度体温光照时钟wifi手机APP监控(程序+原理图+PCB源文件+手机APP源码+硬件设计资料+元器件清单等)

单片机类型选择 方案一&#xff1a;可以使用现在比较主流的单片机STC89C5单片机进行数据处理。这款单片机具有的特点是内存和51的单片机相比多了4KB内存&#xff0c;但是价格和51单片机一样。并且支持数据串行下载和调试助手。此款单片机是有ATMEL公司生产&#xff0c;可用5V电…

详细解释lvs的工作原理

vsl用于集群中的直接路由它的原理如下 如果在公司并发太高了怎么解决 1.加配置cpu 内存 带宽 ssd高效硬盘 2.加服务器 为用户提供服务 横向扩展 集群是什么 由的多台主机构成,相当于一台大型计算机,只提供一个访问入口(域名与ip地址) 集群用在那个场景 高并发场景 vrrp是…

【AI新趋势期刊#2】AI发明计算机算法,如何给大模型排行,照片秒变二维码,视频一键动漫风

前言 每天都要浏览大量AI相关新闻&#xff0c;是不是感到信息量爆炸&#xff0c;有效信息少&#xff1f; 这么多新产品和新工具&#xff0c;到底哪些是真正是有价值的&#xff0c;哪些只是浮躁的一时热点&#xff1f; 想参与AI产品和工具的开发&#xff0c;从哪里能够获得大…

spring security权限路由匹配restful格式的详情id设计

解决方案&#xff1a; 先直接说下解决方案&#xff0c;权限点设计成如下&#xff1a; /api/books/{id:\d*}问题描述&#xff1a; 获取书本详情的标准restful路由&#xff0c;一般是这样的/api/books/12&#xff0c; 12即该book的id&#xff0c;如果需要拥有访问该路由的权限…

设计模式之三:装饰者模式

装饰者模式可以在不修改任何底层代码的情况下&#xff0c;给对象赋予新的职责&#xff08;使用对象组合的方式&#xff0c;在运行时装饰类&#xff09;。 假定星巴兹咖啡需要更新订单系统&#xff0c;而他们原先类的设计如图&#xff1a; 现在他们考虑客户可以选择添加调料&am…

网站弱口令爆破小脚本

介绍 weakpass_exploit&#xff0c;网站弱口令爆破小脚本 优点&#xff1a; 绕过图形验证码 绕过前端数据加密 不足&#xff1a; ddddocr识别不够精确 单线程 注: 本项目所有文件仅供学习和研究使用,请勿使用项目中的技术源码用于非法用途,任何人造成的任何负面影响,与…

Spring Boot 中的 Future 接口是什么,如何使用

Spring Boot 中的 Future 接口是什么&#xff0c;如何使用 在异步编程中&#xff0c;我们通常需要处理一些耗时的操作。一种常见的做法是使用 Future 接口来代表一个异步操作的结果。在 Spring Boot 中&#xff0c;Future 接口被广泛应用于异步编程中&#xff0c;本文将介绍 S…

LNMP实战部署(电影网站搭建)

第三阶段基础 时 间&#xff1a;2023年7月5日 参加人&#xff1a;全班人员 内 容&#xff1a; 目录 LNMP架构及应用部署&#xff1a;&#xff08;单台服务器部署&#xff09; 一、安装nginx&#xff1a;&#xff08;源码安装&#xff09; 二、安装mysql数据库&#xf…

OpenCV使用ellipse()函数来绘制一个椭圆

/*** void ellipse(* InputOutputArray img, // 图像* Point center, // 椭圆原心* Size axes, // 椭圆x轴长度的一半,y轴长度的一半* double angle, // 椭圆旋转角度* double startAngle, // 起始角度* double endAngle, // 终止角度* const Scalar& color, // 椭圆颜色*…

AutoHotkey配置鼠标光标在双屏幕之间瞬移

双屏幕带来的问题 使用双屏幕会带来两个问题&#xff1a;一个是窗口的切换移动不方便&#xff0c;另一个是鼠标的切换移动不方便。 如果需要将屏幕 A 的窗口快速移动到屏幕 B&#xff0c;可以用过 win shift 左右键来实现。 但是令人头疼的一个问题是鼠标还停留在屏幕 A&a…