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 ;

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

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