diff --git a/src/router/route-output.ts b/src/router/route-output.ts index 91249eb..47e2e4c 100644 --- a/src/router/route-output.ts +++ b/src/router/route-output.ts @@ -22,7 +22,7 @@ export function linearArray(tree: any) { * @param {any} current 需要跳转的路由和路由参数 */ export const currentlyRoute = (current: any) => { - const route = deepClone(current); + const route = deepCloneRoute(current); const themeStore = useThemeConfig(); const { isTabs } = storeToRefs(themeStore); const store = useRoutesConfigStore(pinia); @@ -50,6 +50,21 @@ export const currentlyRoute = (current: any) => { store.setRouteNames(route.name); // 缓存路由name }; +/** + * 深拷贝路由,切断与原路由的联系,防止路由参数污染 + * @param route 当前路由 + * @returns 深拷贝后的路由 + */ +export const deepCloneRoute = (route: any) => { + return deepClone({ + path: route.path, + name: route.name, + meta: route.meta, + query: route.query, + params: route.params + }); +}; + /** * 模块替换,深层递归,对所有的路由中符合条件的模块进行转换 * @param {array} tree 过滤角色权限后的树