React中的useSearchParams钩子

前言:

今天是改别人的代码,然后从首页要进到目前写的这个页面,这个页面有许多tab,首页进来要带个key值,然后能够精准的跳到该页面对应的tab上,但是…
他本来的路径是这样的:

  {
   
    path: '/3.0/project/management',
    element: withSuspense(managementList),
  }

我想改成这样:

 {
   
    path: '/3.0/project/management/:key',
    element: withSuspense(managementList),
  }

但是这样就有点麻烦了,因为该页面本身都有默认key,并且每个tab上都有对应的key,还要做一些判断,甚是麻烦,才是就想到了useSearchParams,哈哈哈哈。

useSearchParams

介绍:

它是React Router库中的一个自定义Hook,用于在函数组件中获取和管理URL查询参数。它让我们能够方便的读取和更新当前页面URL中查询参数,并将其与组件的状态进行关联。

使用方法:

  • 安装并引入react-router-dom库
  • 在需要访问查询参数的组件中,使用useSearchParams钩子函数
  • 调用useSearchParams,会返回有两个参数的数组
  • 使用结构语法从返回的数组中提取所需参数

具体使用:

首页用到该路径的代码

const changeTab = (type: string) => {
   
    handleTab("管理", 10, "/3.0/project/management?keys=" + type)
};
...
 onClick={
    () => {
   
    changeTab ("outOfStock");
 } }>

在该组件中获取keys的值:

import {
    useSearchParams } from "react-router-dom";
const management = ()=>{
   
	const tabsKeys = [
	    {
    key: 'onsale', label: '已上架' },
	    {
    key: 'down', label: '待上架' },
	    {
    key: 'outOfStock', label: '商品不足' }
  	]
  	const [searchParams, setSearch] = useSearchParams();
  	const [activeKey, setActiveKey] = useState<any>(Object.fromEntries([...searchParams])?.keys|| tabsKeys[0]?.key);
	const tabOncChange = (key: string) => {
   
	    setActiveKey(key);
	    setSearch({
   itemTab: key});
	}
	return <proTable
			...
			toolbar={
   {
   
		      multipleLine: true,
		      tabs: {
   
		        activeKey,
		        onChange: tabOncChange ,
		        ....
		      }
    	}}/>
}
export default management ;

好了,差不多就这样用的。

相关推荐

  1. ReactuseSearchParams钩子

    2023-12-21 18:40:02       63 阅读
  2. ReactuseMemo钩子

    2023-12-21 18:40:02       56 阅读
  3. reactuseMemo 钩子函数使用

    2023-12-21 18:40:02       40 阅读
  4. 如何在React实现状态钩子

    2023-12-21 18:40:02       28 阅读
  5. Pytest钩子函数

    2023-12-21 18:40:02       25 阅读
  6. Pytorch钩子函数Hook函数

    2023-12-21 18:40:02       40 阅读
  7. pytest钩子函数使用

    2023-12-21 18:40:02       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 18:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 18:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 18:40:02       82 阅读
  4. Python语言-面向对象

    2023-12-21 18:40:02       91 阅读

热门阅读

  1. xlsx-style使用中常见问题及解决办法

    2023-12-21 18:40:02       59 阅读
  2. 在服务器上使用“nohup”命令运行Jupyter Notebook

    2023-12-21 18:40:02       58 阅读
  3. Android ViewModel的简单应用

    2023-12-21 18:40:02       48 阅读
  4. 力扣56. 合并区间

    2023-12-21 18:40:02       46 阅读
  5. liunx安装git

    2023-12-21 18:40:02       62 阅读
  6. JNI学习(一)

    2023-12-21 18:40:02       62 阅读
  7. 【SpringBoot】知识点总结

    2023-12-21 18:40:02       63 阅读