使用 React 路由器删除查询参数
How to remove query params using React router
使用 React 路由器删除查询参数:
- 使用
useSearchParams
挂钩获取当前位置的搜索参数。 - 使用该
delete()
方法删除每个查询参数,例如
searchParams.delete('q')
。 - 更新搜索参数,例如
setSearchParams(searchParams)
.
应用程序.js
import {useSearchParams} from 'react-router-dom'; export default function App() { const [searchParams, setSearchParams] = useSearchParams(); const removeQueryParams = () => { const param = searchParams.get('q'); if (param) { // 👇️ delete each query param searchParams.delete('q'); // 👇️ update state after setSearchParams(searchParams); } }; const handleChange = event => { setSearchParams({q: event.target.value}); }; console.log(searchParams.get('q')); return ( <div> <button onClick={removeQueryParams}>Remove query param</button> <input id="search" autoComplete="off" onChange={handleChange} /> </div> ); }
我们可以使用
useSearchParams挂钩来管理 React 路由器 v6 及更高版本中的查询参数。
该钩子用于读取和修改当前位置的 URL 中的查询字符串。
它返回一个包含 2 个元素的数组 –
const [searchParams, setSearchParams] = useSearchParams()
。
第一个元素是一个对象,我们可以使用它来获取查询参数的值,第二个元素是一个函数,它接受一个键值对对象,并将查询参数设置为该对象。
该setSearchParams
函数的工作方式类似于useNavigatenavigate
挂钩中的函数
,但仅适用于 URL 的搜索部分。
我们必须使用
URLSearchParams.delete()
方法来删除每个查询参数。
请注意,仅删除查询参数是不够的。我们必须调用该
setSearchParams
方法,例如,在我们删除查询参数之后。 setSearchParams(searchParams)
setSearchParams
我们从钩子中得到的方法useSearchParams
用于更新路由的查询参数。