vue3路由传参

页面跳转方式

  1. 声明式 RouterLink 组件
  2. 编程式 访问路由器$router的方法(.push、.replace、go等)

带参数的动态路由匹配(动态字段以冒号开始)

1. 一个参数的
const routes = [
  // 动态字段以冒号开始
  { path: '/users/:id', component: User },
]

像 /users/johnny 和 /users/jolyne 这样的 URL 都会映射到同一个路由。
params 的值将在每个组件中以 this.$route.params 的形式暴露出来。
2. 多个参数
/users/:username/posts/:postId
像路由路径/users/eduardo/posts/123
$route.params参数:{ username: 'eduardo', postId: '123' }
3. 可对参数类型进行正则校验
const routes = [
  // /:orderId -> `仅匹配数字`
  { path: '/:orderId(\\d+)' },
  // /:productName -> 匹配其他任何内容
  { path: '/:productName' },
]
4. 可重复的参数
1. 如果你需要匹配具有多个部分的路由,如 /first/second/third,你应该用 *(0 个或多个)和 +(1 个或多个)将参数标记为可重
const routes = [
  // /:chapters ->  匹配 /one, /one/two, /one/two/three, 等
  { path: '/:chapters+' },
  // /:chapters -> 匹配 /, /one, /one/two, /one/two/three, 等
  { path: '/:chapters*' },
]

这将为你提供一个参数数组,而不是一个字符串,并且在使用命名路由时也需要你传递一个数组:
// 给定 { path: '/:chapters*', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 产生 /
router.resolve({ name: 'chapters', params: { chapters: ['a', 'b'] } }).href
// 产生 /a/b

// 给定 { path: '/:chapters+', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 抛出错误,因为 `chapters` 为空

这些也可以通过在右括号后添加它们与自定义正则结合使用
const routes = [
  // 仅匹配数字
  // 匹配 /1, /1/2, 等
  { path: '/:chapters(\\d+)+' },
  // 匹配 /, /1, /1/2, 等
  { path: '/:chapters(\\d+)*' },
]
5. 路由可选参数,使用 ? 修饰符(0 个或 1 个)
const routes = [
  // 匹配 /users 和 /users/posva
  { path: '/users/:userId?' },
  // 匹配 /users 和 /users/42
  { path: '/users/:userId(\\d+)?' },
]

路由单开传参

// router.js中
{
    path: "/progress",
    component: () => import("@/views/progress"),
  },
// 组件跳转
proxy.$router.push({ path: "/progress", query: {
    projectId: props.id
} });

注意:

  1. 使用动态传参,每次都会作为一个新的路由打开
  2. 免登录时注意白名单配置的路由
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中,可以使用两种方式进行路由传参:query参数和params参数。 1. 使用query参数进行路由传参。在A页中,可以使用`<router-link>`标签传递参数,将参数作为query的一部分传递给B页。例如: ``` <router-link :to="{ path: '/detail', query: { id: '1001' } }">到详情页</router-link> ``` 在B页中,可以使用`useRoute`方法从路由对象中获取参数。例如: ``` import { useRoute } from 'vue-router' const route = useRoute() console.log('route:', route.query.id) ``` 2. 使用params参数进行路由传参。在A页中,可以使用`<router-link>`标签传递参数,将参数作为params的一部分传递给B页。例如: ``` <router-link :to="{ name: 'detail', params: { id: '1001' } }">到详情页</router-link> ``` 在B页中,同样可以使用`useRoute`方法从路由对象中获取参数。例如: ``` import { useRoute } from 'vue-router' const route = useRoute() console.log('route:', route.params.id) ``` 需要注意的是,在路由配置文件(通常是index.js)中,需要将路由路径配置为动态路径。例如: ``` path: '/detail/:id' ``` 这样,就可以在Vue 3中使用query参数或params参数进行路由传参了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue路由传参 vue路由传参](https://download.csdn.net/download/weixin_39709920/87065136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3路由及传参](https://blog.csdn.net/leveretz/article/details/127765076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值