求助求助,关于vue $router.query传参 true/false 本地环境正常(本地string类型),生产环境自动转boolean类型的情况

在开发中遇到一个Number类型的值this.versionsData.mirrorDetail.auditTotal,通过逻辑判断返回了boolean值。使用计算属性和watch监听处理,发现在本地环境正常,但打包部署到测试环境后,值的类型变为字符串。然而,刷新界面后,类型又恢复为正常。寻求问题原因和解决方案。

本人刚入行,在工作开发过程中发现一个问题,求助各位大佬,可以给一个解释,具体情况如下:

this.versionsData.mirrorDetail.auditTotal此处这个是一个Number类型的值,通过判断传入返回了一个boolean类型的值

这里通过计算属性和watch监听的方式获取值

下方的这段代码是解决方案,但是为了展示效果,我在此注释掉了:

接下来是正常情况下的alert 打印(本地环境正常):

接下来是生成环境(我们有一个测试环境,也就是打包部署后:

这里就是发生了奇怪的现状,然后刷新界面以后,又会变成正常的String类型:

以上就是我发现的一个问题,然后描述上可能会有些啰嗦或者不够精确,希望不要喷我,也希望各位大佬能够够一个合适的解释,用于成长,互相学习,避免类似的问题再次发生,感谢感谢!!!!

import type { RouteRecordRaw } from "vue-router"; import { constantRoutes } from "@/router"; import { store } from "@/store"; import router from "@/router"; import MenuAPI, { type RouteVO } from "@/api/system/menu-api"; const modules = import.meta.glob("../../views/**/**.vue"); const Layout = () => import("../../layouts/index.vue"); export const usePermissionStore = defineStore("permission", () => { // 所有路由(静态路由 + 动态路由) const routes = ref<RouteRecordRaw[]>([]); // 混合布局的左侧菜单路由 const mixLayoutSideMenus = ref<RouteRecordRaw[]>([]); // 动态路由是否已生成 const isRouteGenerated = ref(false); /** 生成动态路由 */ async function generateRoutes(): Promise<RouteRecordRaw[]> { try { const data = await MenuAPI.getRoutes(); // 获取当前登录人的菜单路由 const dynamicRoutes = transformRoutes(data); routes.value = [...constantRoutes, ...dynamicRoutes]; isRouteGenerated.value = true; return dynamicRoutes; } catch (error) { // 路由生成失败,重置状态 isRouteGenerated.value = false; throw error; } } /** 设置混合布局左侧菜单 */ const setMixLayoutSideMenus = (parentPath: string) => { const parentMenu = routes.value.find((item) => item.path === parentPath); mixLayoutSideMenus.value = parentMenu?.children || []; }; /** 重置路由状态 */ const resetRouter = () => { // 移除动态添加的路由 const constantRouteNames = new Set(constantRoutes.map((route) => route.name).filter(Boolean)); routes.value.forEach((route) => { if (route.name && !constantRouteNames.has(route.name)) { router.removeRoute(route.name); } }); // 重置所有状态 routes.value = [...constantRoutes]; mixLayoutSideMenus.value = []; isRouteGenerated.value = false; }; return { routes, mixLayoutSideMenus, isRouteGenerated, generateRoutes, setMixLayoutSideMenus, resetRouter, }; }); /** * 换后端路由数据为Vue Router配置 * 处理组件路径映射Layout层级嵌套 */ const transformRoutes = (routes: RouteVO[], isTopLevel: boolean = true): RouteRecordRaw[] => { return routes.map((route) => { const { component, children, ...args } = route; // 处理组件:顶层或非Layout保留组件,中间层Layout设为undefined const processedComponent = isTopLevel || component !== "Layout" ? component : undefined; const normalizedRoute = { ...args } as RouteRecordRaw; if (!processedComponent) { // 多级菜单的父级菜单,不需要组件 normalizedRoute.component = undefined; } else { // 动态导入组件,Layout特殊处理,找不到组件时返回404 normalizedRoute.component = processedComponent === "Layout" ? Layout : modules[`../../views/${processedComponent}.vue`] || modules[`../../views/error/404.vue`]; } // 递归处理子路由 if (children && children.length > 0) { normalizedRoute.children = transformRoutes(children, false); } return normalizedRoute; }); }; /** 非组件环境使用权限store */ export function usePermissionStoreHook() { return usePermissionStore(store); } 在此代码上进行修改
最新发布
10-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值