1.动态路由传参(params)
(1)定义路由(路径参数用 : 标记):
import { createRouter, createWebHistory } from 'vue-router'; const routes = [ { path: '/user/:id', name: 'User', component: () => import('@/views/User.vue'), props: true } ]; const router = createRouter({ history: createWebHistory(), routes }); export default router;
|
(2)传参:
import { useRouter } from 'vue-router'; const router = useRouter(); router.push({ name: 'User', params: { id: '123' } });
router.push('/user/123');
|
(3)接收参数:
方式 1:通过 useRoute 获取
<script setup> import { useRoute } from 'vue-router'; const route = useRoute(); const userId = route.params.id; </script> <template> <div>User ID: {{ userId }}</div> </template>
|
方式 2:通过 props 接收(需路由配置 props: true),因为params 是路由路径的一部分(如 /user/:id),属于“强依赖”参数,可以通过props 接收
<script setup> defineProps(['id']); </script> <template> <div>User ID: {{ id }}</div> </template>
|
2.查询参数(query)
(1)定义路由
const routes = [ { path: '/user', component: User } ]
|
(2)传参
router.push({ path: '/user', query: { id: '123' } });
router.push('/user?id=123');
|
(3)接收参数
<script setup> import { useRoute } from 'vue-router'; const route = useRoute(); const userId = route.query.id; </script>
|