react如何跳转页面
使用 react-router-dom 进行页面跳转
react-router-dom 是 React 生态中最常用的路由管理库,适用于单页应用(SPA)的页面跳转。安装最新版本:
npm install react-router-dom
基本路由配置
在应用入口文件(如 App.js)中配置路由:
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
}
编程式导航
通过 useNavigate hook 实现编程式跳转:

import { useNavigate } from 'react-router-dom';
function Home() {
const navigate = useNavigate();
const handleClick = () => {
navigate('/about'); // 跳转到关于页
navigate(-1); // 返回上一页
navigate('/user', { replace: true }); // 替换当前历史记录
};
return <button onClick={handleClick}>跳转</button>;
}
声明式导航
使用 <Link> 或 <NavLink> 组件创建可点击的导航链接:
import { Link, NavLink } from 'react-router-dom';
function NavBar() {
return (
<nav>
<Link to="/">首页</Link>
<NavLink to="/about" activeClassName="active">关于</NavLink>
</nav>
);
}
动态路由跳转
处理带参数的路径跳转和获取:

// 路由配置
<Route path="/users/:id" element={<UserDetail />} />
// 跳转时传递参数
navigate(`/users/${userId}`);
// 在目标组件获取参数
import { useParams } from 'react-router-dom';
function UserDetail() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
重定向操作
使用 <Navigate> 组件实现条件重定向:
import { Navigate } from 'react-router-dom';
function ProtectedRoute({ user }) {
return user ? <Dashboard /> : <Navigate to="/login" replace />;
}
状态传递
跳转时通过 state 传递数据:
navigate('/profile', {
state: { fromDashboard: true }
});
// 在目标组件获取状态
import { useLocation } from 'react-router-dom';
function Profile() {
const { state } = useLocation();
console.log(state?.fromDashboard); // true
}
路由守卫
通过高阶组件实现权限控制:
function PrivateRoute({ children }) {
const auth = useAuth();
return auth ? children : <Navigate to="/login" />;
}
// 使用方式
<Route path="/dashboard" element={
<PrivateRoute>
<Dashboard />
</PrivateRoute>
} />






