以编程方式更新 React 路由器中的查询参数
使用 useSearchParams 钩子以编程方式更新 React 路由器中的查询参数,例如 setSearchParams({query: ‘myValue’})。 useSearchParams 钩子用于读取和修改当前位置的 URL 中的查询字符串。
import React from 'react';
import {
useSearchParams,
} from 'react-router-dom';
export default function App() {
const [searchParams, setSearchParams] = useSearchParams();
const handleClick = () => {
setSearchParams({myParam: 'hello_world'});
};
const handleChange = event => {
setSearchParams({query: event.target.value});
};
console.log(searchParams.get('myParam'));
console.log(searchParams.get('query'));
return (
<div>
<button onClick={handleClick}>Update Query params</button>
<input id="search" onChange={handleChange} />
</div>
);
}
我们必须确保在 index.js 文件中使用 Router 组件包装了我们的 App,以便使用任何 React 路由器钩子。
import {createRoot} from 'react-dom/client';
import App from './App';
import {BrowserRouter as Router} from 'react-router-dom';
const rootElement = document.getElementById('root');
const root = createRoot(rootElement);
// 👇️ wrap App in Router
root.render(
<Router>
<App />
</Router>
);
代码片段显示了如何在单击按钮和更改输入字段时更新路由的查询参数。
useSearchParams 钩子用于读取和修改当前位置的 URL 中的查询字符串。
它返回一个包含 2 个元素的数组 – const [searchParams, setSearchParams] = useSearchParams()。
setSearchParams 函数的工作方式类似于 useNavigate 挂钩中的导航函数,但仅适用于 URL 的搜索部分。
如果我们需要使用查询参数以编程方式导航到不同的路由,请改用 useNavigate 钩子。
// 👇️ import useNavigate
import {useNavigate} from 'react-router-dom';
export default function App() {
const navigate = useNavigate();
const handleClick = () => {
// 👇️ navigate programmatically
navigate({pathname: '/about', search: '?query=abc&page=25'});
};
return (
<div>
<button onClick={handleClick}>Navigate to About</button>
</div>
);
}
当用户单击该按钮时,他们将导航到 /about?query=abc&page=25。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。