vue3 路由传递参数 query 和 params
在使用传递参数之前,先分清楚 query 和 params传递参数的区别
query 传递参数:
// query 传递参数,结果是 /user?username=xxx router.push({ path: '/user', query: { username: 'xxx' } }); ? // 路由配置: { path: "/user" name: "user", // 路由别名 component: () => import("@/views/user/index.vue"), }, // 接收参数: const route = useRoute(); const plan = route.query.username;
params 传递参数:
// params 传递参数,结果是 /user/xxx router.push({ name: 'user', params: { username: 'xxx' } }); ? // router.push({ path: '/user', params: { username } }) // 结果是 /user,这个写法是错误的,参数传递不会成功,因此 params 不能与 path 一起使用 ? // 路由配置: { path: "/user/:userId", name: "user", // 路由别名 component: () => import("@/views/user/index.vue"), }, ? // 接收参数: const route = useRoute(); const plan = route.params.username;
注意:
使用 params 方式传递参数时,查看接口源码:
export declare interface LocationAsRelativeRaw { name?: RouteRecordName; params?: RouteParamsRaw; }可以看出,该接口没有
path 参数,因此:
router.push({ path: '/user', params: { username } }) // 结果是 /user 这个写法是错误的,参数传递不会成功,因此params 不能与path 一起使用