vue3的路由传参有那些

1. 使用Query传递参数

定义路由:

const routes = [
  { path: '/user', name: 'User', component: User }
]

导航到该路由并传递参数:

  • 在代码中使用this.$router.push()
    this.$router.push({ name: 'User', query: { id: 123, name: '张三' }})
  • 或者直接在URL中添加查询参数:
    http://yourdomain/user?id=123&name=张三

在目标组件中获取参数:

console.log(this.$route.query.id) // 输出: 123
console.log(this.$route.query.name) // 输出: 张三

注意事项:

  • 编码问题:Vue Router使用encodeURIComponent函数对参数进行编码,但是encodeURIComponent 不会对某些特定字符进行编码,这些字符包括字母(A-Z, a-z)、数字(0-9)以及以下特殊字符:- _ . ! ~ * ' ( )。如果你需要对这些字符也进行编码,或者你有其他特定的编码需求,可以采取以下几种方法来实现。          

        1. 自定义编码函数

             你可以编写一个自定义的编码函数,覆盖 encodeURIComponent 的默认行为,对所有字符进行编码,包括那些默认不编码的字符。

示例代码:
function fullEncodeURIComponent(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
    // 单引号、感叹号、括号和星号等字符的编码
    return '%' + c.charCodeAt(0).toString(16).toUpperCase();
  });
}
### Vue 3 中的路由传参方法 #### 使用 `params` 进行传参Vue 3 中,通过 `params` 方式传递参数时,推荐使用对象形式进行传参,并且必须指定命名路由。这种方式不仅提高了代码的可读性,还能够有效避免 URL 解析错误[^4]。 ```html <!-- 发送端 --> <RouterLink :to="{ name: &#39;user&#39;, params: { userId: 123 }}">User</RouterLink> ``` 接收方可以通过调用 `useRoute()` 函数并访问返回的对象中的 `params` 属性来获取这些参数: ```javascript import { useRoute } from &#39;vue-router&#39; export default { setup() { const route = useRoute() console.log(route.params.userId) // 输出:123 return {} } } ``` #### 动态路由匹配 对于动态路径参数,在定义路由规则的时候可以在路径中加入冒号前缀(`:`),这允许路由器识别这部分作为变量处理。之后便能像上面那样利用 `params` 来接受它们[^1]。 ```javascript const routes = [ { path: &#39;/user/:id&#39;, component: User, children: [ // 更多子路由... ] }, ]; ``` #### 查询参数 (query) 除了 `params` 外,还可以采用查询字符串的形式来进行简单的键值对传输。这种情况下不需要特别设置路由名称或模式,只需要正常构建带有问号和键值对的链接即可[^3]。 ```html <!-- 发送端 --> <a href="/search?term=hello">Search Hello</a> <!-- 接收端同样使用 useRoute 获取 query 数据 --> console.log(route.query.term); // "hello" ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山高自有客行路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值