react简单入门-react-router6.0及以上路由传参,以及接受参数

前言:
本文章将讲述两种不同的方式的传参方法:

方法一:

类似:/home/123/home/123/zhangsan
先看demo:
根组件:
只关心我框出来的内容即可
react简单入门-react-router6.0及以上路由传参,以及接受参数_第1张图片

Home组件:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第2张图片

HomeItem组件:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第3张图片

Invoice组件:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第4张图片

导入的依赖:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第5张图片
场景:
比如说,我想访问主页,但是每个人的主页信息是不同的,直接访问/home肯定是确定不了的,需要携带一些参数,比如idname之类的,这样你才能确定你访问是谁的主页,那路径就有可能是类似这样的/home/zhangsan,又或者说有可能会有同名的人,那我有可能会进行分组,想找具体组的具体的“zhangsan”,那就有可能访问的是/home/123/zhangsan

传参:其实上诉场景中就已经是传参了,比如访问/home/zhangsan/home/123/zhangsan,但实际情况中,往往不可能让用户直接在浏览器地址栏直接访问这两个路径,开发者也不会直接写死张三的主页,让用户去点,也许你可以尝试这样编程式导航,就类似Invoice组件中navigate("/home/123");一样效果如下:

接收参数:
其实在我的HomeItem组件中就已经体现到了,就是使用useParams()
react简单入门-react-router6.0及以上路由传参,以及接受参数_第6张图片

方法二:

类似:/home?id=123&name=zhangsan&age=18

传参:
看dome:
只需要关注我框起来的地方即可:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第7张图片
所需要导入的依赖包:

import { useSearchParams } from "react-router-dom";

效果:
当我点击按钮的时候,浏览器的地址栏就会发生变化react简单入门-react-router6.0及以上路由传参,以及接受参数_第8张图片

接收参数:
使用searchParams查询参数对象即可,打印该对象,发现其内部还是存在很多方法的:
react简单入门-react-router6.0及以上路由传参,以及接受参数_第9张图片

放心,上面的所有方法我都帮你们总结了

  1. searchParams.forEach(); // 遍历该查询参数对象所有的参数组react简单入门-react-router6.0及以上路由传参,以及接受参数_第10张图片
    react简单入门-react-router6.0及以上路由传参,以及接受参数_第11张图片

  2. searchParams.append(“age”, 18); // 向查询参数对象后增加一组参数,该函数的两个参数分别为:(新增的字段,新增的字段的值),可重复追加react简单入门-react-router6.0及以上路由传参,以及接受参数_第12张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第13张图片

  3. searchParams.delete(“age”); // 删除查询参数对象的一组参数,如果age有多组,也是全都删除,但并不会删除地址栏react简单入门-react-router6.0及以上路由传参,以及接受参数_第14张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第15张图片

  4. searchParams.entries(); // 返回一个 该查询参数对象所有的参数组 的迭代器,每个参数组为一个数组,如:[“id”,“123”]react简单入门-react-router6.0及以上路由传参,以及接受参数_第16张图片

react简单入门-react-router6.0及以上路由传参,以及接受参数_第17张图片

  1. searchParams.get(“id”); // 获取该查询参数对象的首个为”id“的值react简单入门-react-router6.0及以上路由传参,以及接受参数_第18张图片
    react简单入门-react-router6.0及以上路由传参,以及接受参数_第19张图片

  2. searchParams.getAll(“id”); // 获取该查询参数对象的所有的“id”的值,返回一个数组,如:[“123”,“456”]react简单入门-react-router6.0及以上路由传参,以及接受参数_第20张图片
    react简单入门-react-router6.0及以上路由传参,以及接受参数_第21张图片

  3. searchParams.has(“id”); // 判断该查询参数对象是否存在“id”,存在则true,反之falsereact简单入门-react-router6.0及以上路由传参,以及接受参数_第22张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第23张图片

  4. searchParams.keys(); // 返回一个迭代器,装着该查询参数对象里面所有参数组的所有keyreact简单入门-react-router6.0及以上路由传参,以及接受参数_第24张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第25张图片

  5. searchParams.set(“id”, 789); // 设置该查询参数对象的具体字段的值,该函数两个参数分别为:(要修改的字段,要修改的字段期望的值),如果有重复的,将都会删除,合成一个react简单入门-react-router6.0及以上路由传参,以及接受参数_第26张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第27张图片

  6. searchParams.sort(); // 将该查询参数对象的key按ASCll码排序react简单入门-react-router6.0及以上路由传参,以及接受参数_第28张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第29张图片

  7. searchParams.toString(); // 直接把查询参数对象转为查询字符串,如:id=123&name=zhangsan&id=456react简单入门-react-router6.0及以上路由传参,以及接受参数_第30张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第31张图片

  8. searchParams.values(); // 返回一个迭代器,装着该查询参数对象里面所有参数组的所有valuereact简单入门-react-router6.0及以上路由传参,以及接受参数_第32张图片react简单入门-react-router6.0及以上路由传参,以及接受参数_第33张图片

你可能感兴趣的:(react,react.js,前端,javascript)