传参
Query方式
Section titled “Query方式”- Query 就是使用
?来传递参数,例如/users?page=1&limit=10。 - 适用于:传递可选的查询参数。
在组件中使用:
NavLink
Section titled “NavLink”<NavLink to="/users?page=1&limit=10">Users</NavLink><Link to="/users?page=1&limit=10">Users</Link>useNavigate
Section titled “useNavigate”const navigate = useNavigate();navigate("/users?page=1&limit=10");useSearchParams
Section titled “useSearchParams”import { useSearchParams } from "react-router";
export default function Home() { // ?page=1&limit=10 const [searchParams, setSearchParams] = useSearchParams(); console.log(searchParams.get("page")); console.log(searchParams.get("limit"));
return ( <div> <h1>Home</h1> {/* 修改查询参数,修改后URL=/?page=2&limit=20 */} <button onClick={() => setSearchParams((prev) => { prev.set("page", "2"); prev.set("limit", "20"); return prev; }) } > Change </button> </div> );}useLocation
Section titled “useLocation”import { useLocation } from "react-router";
export default function Home() { const { search } = useLocation(); console.log(search); // ?page=1&limit=10
return ( <div> <h1>Home</h1> </div> );}Params方式
Section titled “Params方式”- Params 就是使用
:[id]来传递参数,例如/users/1。 - 适用于:传递必要的路径参数。
<NavLink to="/users/1">User 1</NavLink><Link to="/users/1">User 1</Link>const navigate = useNavigate();navigate("/users/1");useParams
Section titled “useParams”const { id } = useParams();console.log(id);State方式
Section titled “State方式”- State 在 URL 上不显示,但是可以传递参数,例如
/users。
<NavLink to="/users" state={{ page: 1, pageSize: 20, }}> Users</NavLink><Link to="/users" state={{ page: 1, pageSize: 20, }}> Users</Link>const navigate = useNavigate();navigate("/users", { state: { page: 1, pageSize: 20, },});const { state } = useLocation();console.log(state);console.log(state.page);