路由的query和params参数有什么区别

在前端路由中,queryparams 都是用来传递数据的方式,但它们在使用方式、传递路径和作用上有所不同。
⚠️注意:以下代码是在umi.js环境中适用(需要有react基础)

1. Query 参数(查询参数)

  • 位置: query 参数是通过 URL 中的 查询字符串 传递的,它位于 URL 的 ? 之后。例如:

    /products?category=shoes&color=red
    
  • 获取方式: 在umijs中可以通过 useLocation 钩子来获取 query 参数。它们存储在 location.search 中,可以通过 URLSearchParams 对象来解析这些查询参数。

  • 作用: query 参数通常用来过滤、排序或分页等功能。它们是非必需的参数,允许在保持同一页面的情况下动态地修改一些状态或请求。

  • 特点:

    • 参数是可选的,可以在同一个 URL 中携带多个。
    • 用户可以直接在浏览器地址栏中修改 query 参数。
    • query 参数没有顺序,顺序不影响解析。
  • 示例 URL:

    /search?keyword=react&page=2
    

    在这里,keywordpagequery 参数。

  • 获取 query 参数示例:

    import { useLocation } from 'umi';
    
    export default function SearchComponent() {
      const location = useLocation();
      const params = new URLSearchParams(location.search);
    
      const keyword = params.get('keyword'); // 获取查询参数
      const page = params.get('page');
    
      return (
        <div>
          <p>Keyword: {keyword}</p>
          <p>Page: {page}</p>
        </div>
      );
    }
    

2. Params 参数(路径参数)

  • 位置: params 参数是通过 动态路由 的 URL 传递的,它们直接嵌入在 URL 的路径中。例如:

    /products/shoes/123
    

    在这个 URL 中,123 就是一个 params 参数,通常用来表示资源的唯一标识符。

  • 获取方式: 可以通过 useParamsuseRouteMatch 钩子来获取 params 参数。动态路由参数由路由定义时指定的占位符(如 /products/:id)来捕获。

  • 作用: params 参数通常用于唯一标识某个资源,如用户 ID、产品 ID 等。这些参数是路由的一部分,通常是必需的,用于访问某个具体的页面。

  • 特点:

    • 参数是必需的,通常用于特定资源的访问。
    • 在 URL 路径中以斜杠 / 分隔。
    • 参数顺序必须严格按照路由定义。
  • 示例 URL:

    /users/123/orders
    

    在这里,123 是用户的 ID,是 params 参数。

  • 获取 params 参数示例:

    import { useParams } from 'umi';
    
    export default function UserComponent() {
      const { id } = useParams(); // 从路径中获取参数
    
      return (
        <div>
          <p>User ID: {id}</p>
        </div>
      );
    }
    

区别总结

特性query 参数params 参数
位置? 后面,作为 URL 查询字符串的一部分嵌入在 URL 路径中
使用场景过滤、排序、分页等非必需信息用于标识资源,通常是必需的
获取方式useLocationURLSearchParams 解析useParamsuseRouteMatch 获取
格式/path?key=value/path/:param
参数可选性可选,可以有多个且顺序无关必需,顺序和路由定义严格相关
用户修改用户可以在地址栏修改用户通常不会直接修改,属于 URL 设计的一部分
典型应用搜索关键词、页码、过滤条件用户 ID、产品 ID、文章 ID 等

使用场景

  • Query 参数: 适用于页面的筛选、过滤条件,或者控制某些行为的可选参数。例如搜索页中的关键词、分页页数、排序方式等。
  • Params 参数: 适用于标识资源的必要参数。例如访问某个用户、产品、文章等的具体详情页面。

理解 queryparams 的区别有助于在开发时合理选择传递数据的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值