vue3里路由传参的两种形式——query和params区分

query查询参数(Query Parameters)

在使用router.push()的时候:

import { useRouter } from 'vue-router';
const router = useRouter()
const goToIndex= (item: Item) => {
    router.push({
        path: '/index',
        query: item
    })
}

接收的时候:

import { useRoute } from 'vue-router';
const route = useRoute()
console.log(route.query) // route.query==item

也可以直接字符串拼接

router.push({
        path: `/index?id=${user.id}&keywords='传递参数'`})

接收的时候:

import { useRoute } from 'vue-router';
const route = useRoute()
console.log(route.query.id) // route.query.id==user.id
console.log(route.query.keywords) // route.query.keywords=='传递参数'

注意区分 useRouter()useRoute() 的作用,前者用于路由跳转,后者用于获取路由相关信息如参数、路由路径path等

params传参

使用router.push()或者 router.replace() 的时候,改为对象形式并且只能使用name,path无效,然后传入params

// 路由定义,在router/index.js配置
const routes = [
  {
    path: '/user/:id', // 冒号后面的id是动态参数
    name: 'user',
    component: User
  }
];
index.vue
// 路由跳转
router.push({ name: 'user', params: { id: 123 } });

query传参和params传参的区别

  • query(查询参数):
    • 查询参数不是 URL 的结构部分,它们不会影响 URL 的基本结构
    • 查询参数是通过问号(?)后跟键值对形式的字符串附加在 URL 上的,用于传递非主路径的额外信息,如搜索条件或分页信息。例:/search?keyword=vue&page=1。
    • 查询参数在路由跳转时可以通过对象的形式传递,例如 { path: '/search', query: { keyword: 'vue', page: 1 } }
  • params(路径参数):
    • 路径参数在 URL 中是可见的,并且是 URL 的一部分
    • 路径参数是嵌入在路由路径中的,它们通常用于标识特定的资源,如用户 ID 或文章的 slug。例:/users/:id
    • 路径参数在路由跳转时通常通过对象的形式传递,例如 { name: 'user', params: { id: 123 } }
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue3路由传参两种方式:queryparamsquery是通过URL的查询参数传递参数,例如:/user?id=123&name=张三。在路由配置,可以使用props属性将query参数映射到组件的propsparams是通过URL的路径参数传递参数,例如:/user/123。在路由配置,需要使用动态路由配置来定义路径参数,例如:/user/:id。在组件可以通过$route.params来获取路径参数。 需要注意的是,query参数是可选的,而params参数是必须的。另外,query参数可以在URL直接修改,而params参数只能通过路由跳转来修改。 ### 回答2: Vue.js是一款流行的JavaScript框架之一,它具有易用、高效且灵活的特点。在Vue.js路由是非常重要的一个模块,而路由传参就是常见的需求。 Vue3版本路由传参主要有两种方式:queryparams。 1. Query传参 Query传参是通过在URL添加参数,从而将参数传递给目标组件。比如我们要传递一个名称为“name”,值为“user”的参数,可以在路由链接添加“?name=user”的参数: ```javascript <router-link :to="{ path: '/user', query: { name: 'user' } }">User</router-link> ``` 在目标组件,我们可以通过$router对象来访问参数: ```javascript this.$route.query.name // user ``` 2. Params传参 Params传参是通过在路由路径添加参数,从而将参数传递给目标组件。以用户ID为例,我们可以在路由配置添加“:id”参数: ```javascript { path: '/user/:id', name: 'User', component: User } ``` 在路由链接,我们可以通过$router对象来设置参数: ```javascript <router-link :to="{ path: '/user/1' }">User 1</router-link> ``` 在目标组件,我们可以通过$router对象来访问参数: ```javascript this.$route.params.id // 1 ``` 需要注意的是,我们在路由配置定义的参数名和在路由链接传递的参数名必须保持一致。另外,Params传参是不支持通过键值对的方式传递多个参数的。 总结 在Vue3路由传参两种方式:queryparamsQuery传参是通过在URL添加参数Params传参是通过在路由路径添加参数。在使用路由传参时,我们需要注意传递参数的方式和参数名的一致性,以确保传参能够正常工作。 ### 回答3: Vue3 是目前全球使用人数最多的前端框架之一,其路由也是 Vue3 非常重要的一个部分。在Vue3,我们可以使用路由传递参数从一个页面到另一个页面。Vue3 路由传参分为两种方式:queryparams。 1. query方式 query方式是通过URL传参的方式将参数进行传递和获取的。在URL后面加上 ?参数名=参数值,可以传递一个或多个参数,多个参数之间使用 & 符号连接。 比如,我们可以这样传递参数: ```javascript <router-link :to="{path:'/user',query:{id:1,name:'Tom'}}">用户</router-link> ``` 在路由我们可以通过 `$route.query` 获取传递的参数,例如: ```javascript { path: '/user', name: 'user', component: User, query: { id: 1, name: 'Tom' } } ``` 2. params方式 params方式是通过路由路径参数参数进行传递和获取的。使用这种方式传递参数时,参数会变成路由路径的一部分。 比如,我们可以这样传递参数: ```javascript <router-link :to="{ path: '/user/1/Tom' }">用户</router-link> ``` 在路由我们可以通过 `$route.params` 获取传递的参数,例如: ```javascript { path: '/user/:id/:name', name: 'user', component: User, params: { id: 1, name: 'Tom' } } ``` 总的来说,Vue3 路由传参 queryparams 都有其优劣势。query 参数可以传递任意数量的参数,但是 URL 传递参数可能会因为长度而受限;params 参数可以在 URL 优雅地显示要传递的参数,但是只能传递有限的参数,并且参数的顺序也很重要。根据实际情况,我们应该灵活使用不同的方式来进行参数传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值