react实现内部链接
使用 React Router 实现内部链接
React 应用中实现内部链接通常依赖 react-router-dom 库,以下是具体实现方法:
安装依赖
npm install react-router-dom
基本路由配置
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<Router>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
动态路由与参数传递
带参数的路由
<Route path="/user/:id" element={<UserProfile />} />
获取路由参数
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
编程式导航
使用 useNavigate 钩子
import { useNavigate } from 'react-router-dom';
function LoginButton() {
const navigate = useNavigate();
return (
<button onClick={() => navigate('/dashboard')}>
Login
</button>
);
}
嵌套路由实现
子路由配置
<Route path="/products" element={<Products />}>
<Route path=":productId" element={<ProductDetail />} />
</Route>
在父组件中渲染子路由
import { Outlet } from 'react-router-dom';
function Products() {
return (
<div>
<h2>Products List</h2>
<Outlet /> {/* 子路由将在此渲染 */}
</div>
);
}
链接样式优化
激活状态样式
<NavLink
to="/about"
style={({ isActive }) =>
isActive ? { color: 'red' } : undefined
}
>
About
</NavLink>
路由守卫实现
保护路由示例
function PrivateRoute({ children }) {
const isAuthenticated = checkAuth();
return isAuthenticated ? children : <Navigate to="/login" />;
}
<Route
path="/dashboard"
element={
<PrivateRoute>
<Dashboard />
</PrivateRoute>
}
/>
路由懒加载
动态导入组件
const About = lazy(() => import('./About'));
<Routes>
<Route path="/about" element={
<Suspense fallback={<div>Loading...</div>}>
<About />
</Suspense>
}/>
</Routes>






