当前位置:首页 > React

react实现页面跳转方式

2026-01-27 17:37:58React

使用 React Router 进行页面跳转

React Router 是 React 应用中最常用的路由管理库,提供多种导航方式。

安装 React Router:

npm install react-router-dom

声明式导航
使用 <Link><NavLink> 组件实现跳转:

import { Link } from 'react-router-dom';

<Link to="/about">About Page</Link>

<NavLink> 会默认添加 active 类名,适合导航菜单高亮。

编程式导航
通过 useNavigate Hook 在事件中跳转:

import { useNavigate } from 'react-router-dom';

function HomePage() {
  const navigate = useNavigate();
  return (
    <button onClick={() => navigate('/profile')}>
      Go to Profile
    </button>
  );
}

路由参数传递

URL 参数
通过动态路由定义和 useParams 获取:

react实现页面跳转方式

// 路由配置
<Route path="/user/:id" element={<UserPage />} />

// 组件内获取
import { useParams } from 'react-router-dom';
const { id } = useParams();

查询参数
使用 URLSearchParams 处理:

navigate(`/search?keyword=${value}`);

// 获取参数
const [searchParams] = useSearchParams();
const keyword = searchParams.get('keyword');

状态传递
通过 state 属性隐式传参:

navigate('/target', { state: { fromHome: true } });

// 获取状态
const location = useLocation();
const state = location.state;

重定向处理

组件内重定向
使用 <Navigate> 组件:

import { Navigate } from 'react-router-dom';

function ProtectedRoute({ auth }) {
  return auth ? <Dashboard /> : <Navigate to="/login" />;
}

路由配置重定向
在路由配置中使用 redirect

react实现页面跳转方式

<Route path="/old" element={<Navigate to="/new" />} />

嵌套路由实现

通过 <Outlet> 实现布局嵌套:

// 父路由
<Route path="/admin" element={<AdminLayout />}>
  <Route path="dashboard" element={<Dashboard />} />
</Route>

// AdminLayout 组件
import { Outlet } from 'react-router-dom';
function AdminLayout() {
  return (
    <div>
      <Header />
      <Outlet />  // 子路由内容将在此渲染
    </div>
  );
}

路由守卫实现

通过高阶组件保护路由:

function PrivateRoute({ children }) {
  const auth = useAuth();
  return auth ? children : <Navigate to="/login" />;
}

// 使用方式
<Route path="/profile" element={
  <PrivateRoute>
    <ProfilePage />
  </PrivateRoute>
} />

动态路由加载

结合 React.lazy 实现代码分割:

const AboutPage = React.lazy(() => import('./AboutPage'));

<Route 
  path="/about" 
  element={
    <React.Suspense fallback={<Loader />}>
      <AboutPage />
    </React.Suspense>
  } 
/>

路由跳转拦截

使用 useBlocker 阻止未保存离开:

import { unstable_useBlocker as useBlocker } from 'react-router-dom';

function EditPage() {
  const [isDirty, setIsDirty] = useState(false);
  useBlocker(() => isDirty, 'Changes may not be saved');
}

标签: 跳转页面
分享给朋友:

相关文章

h5实现网页跳转

h5实现网页跳转

H5实现网页跳转的方法 在HTML5中,可以通过多种方式实现网页跳转。以下是几种常见的方法: 使用<a>标签 通过超链接标签实现跳转是最传统的方式: <a href="http…

vue 实现页面注册

vue 实现页面注册

Vue 实现页面注册功能 在 Vue 中实现用户注册功能通常需要以下步骤: 创建注册表单组件 使用 Vue 的单文件组件结构创建一个注册表单,包含必要的输入字段如用户名、邮箱、密码等。 <t…

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…

vue实现关闭页面

vue实现关闭页面

关闭当前页面的方法 在Vue中关闭当前页面通常涉及调用浏览器提供的JavaScript方法。以下是几种常见的实现方式: window.close()方法 methods: { closeWin…

vue实现页面导出

vue实现页面导出

Vue 实现页面导出为 PDF 或图片 使用 html2canvas 和 jsPDF 导出为 PDF 安装依赖库: npm install html2canvas jspdf --save 在 Vu…

vue实现页面下钻

vue实现页面下钻

Vue 实现页面下钻的方法 使用 Vue Router 进行路由跳转 在 Vue 项目中,可以通过 Vue Router 实现页面下钻。定义路由时,为下钻页面配置动态路由参数。 // router/…