react组件如何传值给路由
通过路由参数传递
在React中,可以通过路由参数将值传递给目标组件。使用react-router-dom的Route组件定义动态路径,例如path="/user/:id",其中:id是参数占位符。
目标组件通过useParams钩子获取参数:

import { useParams } from 'react-router-dom';
function User() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
通过查询参数传递
使用URLSearchParams或useLocation处理查询字符串。导航时通过Link组件的to属性或navigate函数附加查询参数:
import { Link, useLocation } from 'react-router-dom';
// 导航时传递
<Link to="/search?query=react">Search</Link>
// 组件中获取
function Search() {
const location = useLocation();
const query = new URLSearchParams(location.search).get('query');
return <div>Search Query: {query}</div>;
}
通过状态对象传递
使用navigate或Link的state属性传递复杂对象。目标组件通过useLocation获取状态:

import { useNavigate, useLocation } from 'react-router-dom';
// 传递状态
const navigate = useNavigate();
navigate('/profile', { state: { user: 'Alice' } });
// 接收状态
function Profile() {
const { state } = useLocation();
return <div>User: {state?.user}</div>;
}
通过上下文或全局状态
对于跨组件共享数据,可使用React Context或状态管理库(如Redux)。创建上下文提供者包裹路由组件,子组件通过useContext消费数据:
const UserContext = React.createContext();
function App() {
return (
<UserContext.Provider value={{ user: 'Bob' }}>
<Routes>...</Routes>
</UserContext.Provider>
);
}
function AnyComponent() {
const { user } = useContext(UserContext);
return <div>{user}</div>;
}
通过路由配置传递
在定义路由时通过element属性直接传递props:
<Route path="/dashboard" element={<Dashboard user="Admin" />} />
每种方法适用于不同场景:参数适合简单标识符,查询适合可选过滤条件,状态对象适合敏感或复杂数据,上下文/全局状态适合跨层级共享。






