Vue Router 中:route.params.id 和 route.query.id 的区别

路由参数 params 与 query 区别


在Vue Router中,route.params.id和route.query.id的主要区别在于参数来源和使用场景。


params.id来自URL路径(如/user/123),需预先定义路由配置,通常用于必选资源标识;


query.id来自查询字符串(如/user?id=123),无需定义,用于可选参数如筛选分页。


前者适合资源定位(看什么),后者用于操作资源(怎么看)。两者在刷新或分享时都不会丢失参数值。


route.params.idroute.query.id 的区别


示例

javascript 复制代码
import {useRoute } from 'vue-router';

const route = useRoute();
console.log(route.params.id);
console.log(route.query.id);

在 Vue Router 中,route.params.idroute.query.id 的区别主要体现在数据的来源、URL 的表现形式以及使用场景上。


特性 route.params.id route.query.id
数据来源 来自 URL 路径 中动态匹配的部分(路径参数)。 来自 URL 中 ? 号后面 的查询字符串(查询参数)。
URL 示例 /user/123 这里的 123 就是 params.id /user?id=123 这里的 123 就是 query.id
定义方式 需要在路由配置中预先定义。 无需在路由配置中定义,任何页面都可以接收。
适用场景 必选参数 ,通常用于标识唯一资源 。 例如:文章详情页 /article/1,用户主页 /user/zhangsan 可选参数 ,通常用于筛选、排序、分页 或携带额外信息 。 例如:商品列表页 /products?category=phone&page=2
传递方式 通过路由路径拼接。 通过 URL 的 ?key=value 形式拼接。
是否必须 通常是必选的(除非配置了可选参数),如果缺少可能导致路由无法匹配。 是可选的,不会影响页面的路由匹配,只会影响页面内容。
刷新或分享 URL 刷新或分享后不会丢失,因为它是 URL 的一部分。 刷新或分享后不会丢失,因为它也是 URL 的一部分。
获取方式 route.params.id route.query.id

route.params.id 需要在路由配置中预先定义


router/index.ts 路由

TypeScript 复制代码
{//新建文章和编辑页面共用一个路由,根据是否有id参数来区分新建还是编辑
  path:"/createPost/:id?",//id参数可选
  name:"CreatePost",
  meta:{
    // requireLogin:是否需要登录
    requireLogin:true
  },
  component:()=>import('../views/CreatePost.vue')
}

route.query.id 无需在路由配置中定义,任何页面都可以接收

PostDetail.vue 文章详情页

TypeScript 复制代码
<!-- 编辑和删除区域 -->
<div v-if="showEditArea" class="btn-group mt-5">
  <router-link type="button" class="btn btn-success" :to="{ name: 'CreatePost', query: { id: currentPost._id } }">
    编辑
  </router-link>
  <button type="button" class="btn btn-danger">删除</button>
</div>

总结

  • params.id :存在于路径中,用于定位资源(看什么)。

  • query.id :存在于查询字符串中,用于对资源进行额外操作(怎么看)。

相关推荐
迪巴拉152511 小时前
基于Vue与Spring Boot+Open Cv的智慧校园考勤系统
前端·vue.js·spring boot
&活在当下&11 小时前
Vue3 h函数用法详解
前端·javascript·vue.js
小贵子的博客11 小时前
(vue3错误处理)has naming conflicts with other components, ignored.
前端·javascript·vue.js
跟着珅聪学java14 小时前
Electron 读取 JSON 配置文件教程
前端·javascript·vue.js
钰衡大师14 小时前
Vue 3 源码学习教程
前端·vue.js·学习
日光倾15 小时前
【Vue.js 入门笔记】闭包和对象引用
前端·vue.js·笔记
EstherNi15 小时前
左右两侧定位的效果,vue3
javascript·vue.js
Rsun0455115 小时前
Vue相关面试题
前端·javascript·vue.js