掌握 React Router v6 中的 URL 参数和查询字符串
React Router v6 中的 URL 参数和查询字符串
URL 参数和查询字符串是 Web 应用程序中 URL 管理的重要方面。它们允许您将动态数据传递给不同的路由,并根据该数据管理路由。React Router v6 为处理 **URL 参数** 和 **查询字符串** 提供无缝支持,让您可以构建更动态、更灵活的应用程序。
1. React Router v6 中的 URL 参数
URL 参数,也称为**路由参数**或**动态参数**,是 URL 的一部分,可用于捕获动态值。这些通常用于识别特定资源或实体。
URL 参数示例:
对于像 `/profile/:username` 这样的路线,`username` 部分是一个 URL 参数。
步骤 1:使用 URL 参数定义路由
import React from 'react'; import { BrowserRouter as Router, Routes, Route, Link, useParams } from 'react-router-dom'; const Profile = () => { // Use the useParams hook to access URL parameters const { username } = useParams(); returnProfile of {username}
; }; const App = () => { return (); }; export default App; } />
解释:
URL 参数的要点:
2. React Router v6 中的查询字符串
查询字符串是出现在 URL 中的“?”后面的键值对。它们通常用于向服务器传递附加信息或在不更改路由的情况下修改页面的行为。
查询字符串示例:
对于像 `/search?query=React` 这样的 URL,查询字符串是 `?query=React`。
步骤 1:使用 useLocation 处理查询字符串
在 React Router v6 中,可以使用 `useLocation` 钩子访问查询字符串。`useLocation` 提供对当前 URL 的访问,包括路径名、搜索(查询字符串)和哈希。
import React from 'react'; import { BrowserRouter as Router, Routes, Route, Link, useLocation } from 'react-router-dom'; const Search = () => { // Use the useLocation hook to access the query string const location = useLocation(); const queryParams = new URLSearchParams(location.search); const query = queryParams.get('query'); // Extract query parameter from the URL return (); }; const App = () => { return (Search Results
{query ?Searching for: {query}
:No search query provided
}); }; export default App; } />
解释:
查询字符串的要点:
3. 组合 URL 参数和查询字符串
您还可以在同一路由中同时使用 URL 参数和查询字符串。例如,您可能希望根据动态“用户名”显示用户个人资料,并使用查询参数过滤数据。
包含 URL 参数和查询字符串的示例:
import React from 'react'; import { BrowserRouter as Router, Routes, Route, Link, useLocation, useParams } from 'react-router-dom'; const Profile = () => { const { username } = useParams(); const location = useLocation(); const queryParams = new URLSearchParams(location.search); const ageFilter = queryParams.get('age'); // Extract age filter from query string return (); }; const App = () => { return (Profile of {username}
{ageFilter &&Age Filter: {ageFilter}
}); }; export default App; } />
解释:
关键要点:
结论
React Router v6 可让您轻松处理路由逻辑中的 **URL 参数** 和 **查询字符串**。使用 **useParams** 钩子,您可以轻松访问动态路由参数,而 **useLocation** 和 **URLSearchParams** 则可帮助管理查询字符串。通过理解和有效使用这些工具,您可以创建具有增强路由功能的动态且灵活的 React 应用程序。