react如何实现界面跳转
使用 React Router 实现界面跳转
React Router 是 React 生态中最常用的路由管理库,适用于单页面应用(SPA)的界面跳转。安装最新版本的 React Router(v6):
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>
);
}
跳转方式:Link 组件
在组件中使用 Link 实现声明式跳转,避免页面刷新:
import { Link } from 'react-router-dom';
function Navbar() {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
);
}
编程式导航:useNavigate Hook
通过 useNavigate 在事件处理中实现跳转:
import { useNavigate } from 'react-router-dom';
function LoginButton() {
const navigate = useNavigate();
const handleLogin = () => {
navigate('/dashboard'); // 跳转到指定路径
// navigate(-1); // 返回上一页
};
return <button onClick={handleLogin}>Login</button>;
}
动态路由与参数传递
配置动态路由捕获参数:
<Route path="/user/:id" element={<UserProfile />} />
通过 useParams 获取参数:
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
传递状态参数:
navigate('/user/123', { state: { from: 'home' } });
// 在目标组件通过 useLocation 获取:
const location = useLocation();
console.log(location.state.from); // 输出 'home'
路由重定向
使用 Navigate 组件实现条件重定向:
import { Navigate } from 'react-router-dom';
function PrivateRoute({ isAuthenticated }) {
return isAuthenticated ? <Dashboard /> : <Navigate to="/login" />;
}
嵌套路由布局
通过嵌套 Route 实现布局复用:
<Route path="/admin" element={<AdminLayout />}>
<Route index element={<AdminDashboard />} />
<Route path="users" element={<UserList />} />
</Route>
在 AdminLayout 组件中使用 <Outlet /> 渲染子路由:
import { Outlet } from 'react-router-dom';
function AdminLayout() {
return (
<div>
<h1>Admin Panel</h1>
<Outlet /> {/* 子路由内容将在此渲染 */}
</div>
);
}






