Vue 路由传参:使用 query 属性传递版本 ID
Vue 路由传参:使用 query 属性传递版本 ID
路由文件:
{
path: "/version",
component: Layout,
redirect: "/version/",
meta: {
title: "版本",
icon: "version",
hidden: false,
roles: ["ADMIN"],
keepAlive: true
},
children: [
{
path: "VersionDetail",
component: () => import("@/views/version/VersionDetail/index.vue"),
name: "VersionDetail",
meta: {
title: "查看版本内容",
icon: "VersionDetail",
hidden: false,
roles: ["ADMIN"],
keepAlive: true
}
}
]
}
第一个文件:
function toDetail(versionId?: string) {
router.push({
name: "VersionDetail",
query: { VersionDetail: versionId },
params: { newTitle: '版本详情[' + versionId + ']' }
});
}
第二个文件:
import { onMounted, useRouter } from "vue";
export default {
setup() {
const router = useRouter();
onMounted(() => {
const versionDetail = router.currentRoute.value.query.VersionDetail as string;
handleQuery(versionDetail);
});
}
};
**问题:**第二个文件无法接收到第一个文件传过来的版本 ID。
原因:
在路由配置中,params应该是一个对象,而不是一个字符串。第一个文件将versionId作为字符串传递,导致第二个文件无法获取到它。
解决方案:
将params修改为query,并将VersionDetail作为一个参数传递。
修改后的代码:
第一个文件:
function toDetail(versionId?: string) {
router.push({
name: "VersionDetail",
query: { VersionDetail: versionId },
params: { newTitle: '版本详情[' + versionId + ']' }
});
}
第二个文件:
import { onMounted, useRouter } from "vue";
export default {
setup() {
const router = useRouter();
onMounted(() => {
const versionDetail = router.currentRoute.value.query.VersionDetail as string;
handleQuery(versionDetail);
});
}
};
这样,第二个文件就可以正确地接收到第一个文件传递的版本 ID 了。
注意:
params用于传递路径参数,而query用于传递查询参数。- 在第二个文件中,使用
router.currentRoute.value.query.VersionDetail获取查询参数的值。 as string用于将VersionDetail转换为字符串类型。
原文地址: https://www.cveoy.top/t/topic/VXU 著作权归作者所有。请勿转载和采集!