当前位置:首页 > React

react 如何跳转页面跳转

2026-03-10 20:30:43React

在 React 中实现页面跳转可以通过多种方式实现,具体取决于使用的路由库或原生方法。以下是常见的几种方法:

使用 react-router-dom(推荐)

如果项目已配置 react-router-dom(v6 及以上版本),可以通过以下方式跳转:

编程式导航
通过 useNavigate Hook 实现动态跳转:

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

function MyComponent() {
  const navigate = useNavigate();

  const handleClick = () => {
    navigate('/target-path'); // 跳转到指定路径
    navigate(-1); // 返回上一页
  };

  return <button onClick={handleClick}>跳转</button>;
}

声明式导航
通过 <Link><NavLink> 组件实现:

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

function MyComponent() {
  return (
    <Link to="/target-path">跳转到目标页</Link>
  );
}

使用 window.location(原生方法)

无需路由库时,可通过原生 API 跳转:

window.location.href = 'https://example.com'; // 完整 URL
window.location.pathname = '/target-path';   // 相对路径

使用重定向组件

在路由组件中通过 <Navigate> 实现条件跳转:

react 如何跳转页面跳转

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

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

注意事项

  • 路由库依赖react-router-dom 需提前安装并配置路由(如 <BrowserRouter>)。
  • 状态传递:编程式导航可通过 state 参数传递数据:
    navigate('/target', { state: { id: 123 } });
  • 替换历史记录:使用 { replace: true } 避免保留当前页历史:
    navigate('/target', { replace: true });

以上方法覆盖了大多数场景,根据项目需求选择合适的方式即可。

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

相关文章

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本步骤 在Vue单页面应用(SPA)中实现登录功能,通常需要结合前端和后端交互。以下是关键步骤和代码示例: 创建登录组件 开发一个独立的登录组件,包含表单元素如用户名和密码输入框,以…

Vue实现lagger页面

Vue实现lagger页面

Vue实现懒加载页面的方法 懒加载(Lazy Loading)是一种优化技术,用于延迟加载非关键资源,从而提升页面初始加载速度。在Vue中可以通过以下方式实现懒加载: 路由懒加载 使用Vue Rou…

react如何页面跳转

react如何页面跳转

React 页面跳转方法 在 React 中实现页面跳转有多种方式,具体取决于项目使用的路由库(如 React Router)或状态管理工具。以下是常见的几种方法: 使用 React Router…

h5页面滑动效果实现

h5页面滑动效果实现

实现H5页面滑动效果的方法 H5页面滑动效果可以通过多种方式实现,包括原生JavaScript、CSS动画或第三方库。以下是几种常见的方法: 使用CSS Scroll Snap CSS Scroll…

vue 实现商品页面

vue 实现商品页面

实现商品页面的基本步骤 使用Vue.js实现商品页面需要结合组件化开发、数据绑定和路由等功能。以下是一个典型实现方案: 商品数据管理 商品数据通常存储在Vuex或Pinia状态管理中,也可以通过AP…

vue实现搜索页面

vue实现搜索页面

Vue 实现搜索页面的方法 基础结构搭建 创建搜索组件,包含输入框和搜索按钮,使用v-model绑定搜索关键词: <template> <div class="search-c…