当前位置:首页 > 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');
}

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

相关文章

vue实现页面

vue实现页面

Vue 实现页面的基本方法 创建 Vue 项目 使用 Vue CLI 快速初始化项目,运行以下命令安装并创建项目: npm install -g @vue/cli vue create my-pr…

vue实现的页面

vue实现的页面

Vue 实现的页面示例 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是一个简单的 Vue 页面实现示例,包含基本的结构和功能。 安装 Vue 通过 CDN 引入…

vue实现页面分模块

vue实现页面分模块

Vue 实现页面分模块的方法 在 Vue 中实现页面分模块可以通过组件化、路由分割、动态加载等方式实现,以下是具体方法: 组件化拆分 将页面拆分为多个功能独立的组件,每个组件负责特定功能模块。通过…

vue如何实现默认页面

vue如何实现默认页面

Vue 实现默认页面的方法 在 Vue 项目中,通常需要设置一个默认页面(如首页或登录页)作为用户访问时的初始页面。可以通过路由配置实现。 配置路由默认跳转 在 Vue Router 中,使用 r…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

h5页面实现vr

h5页面实现vr

实现H5页面VR效果的方法 在H5页面中实现VR(虚拟现实)效果,可以通过以下几种技术方案实现: 使用WebVR API WebVR是一个实验性的JavaScript API,提供了访问VR设备的功…