当前位置:首页 > React

react如何跳转页面

2026-03-31 00:35:50React

使用 react-router-dom 进行页面跳转

react-router-dom 是 React 生态中最常用的路由管理库,提供多种导航方式。

安装依赖

npm install react-router-dom

声明式导航(Link 组件)

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

function NavBar() {
  return (
    <nav>
      <Link to="/home">Home</Link>
      <Link to="/about">About</Link>
    </nav>
  );
}

编程式导航(useNavigate Hook)

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

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

  const handleLogin = () => {
    // 跳转到指定路径
    navigate('/dashboard');

    // 带参数跳转
    navigate('/profile', { state: { userId: 123 } });

    // 替换当前历史记录
    navigate('/settings', { replace: true });
  };

  return <button onClick={handleLogin}>Login</button>;
}

使用 window.location 跳转

适用于非单页应用场景或需要完全刷新页面的情况。

基本跳转

window.location.href = 'https://example.com';

替换当前历史记录

react如何跳转页面

window.location.replace('https://example.com/new-page');

使用重定向组件

在路由渲染过程中进行跳转控制。

Redirect 组件(v5)

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

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

Navigate 组件(v6)

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

function AuthGuard({ children }) {
  const isLoggedIn = checkAuth();

  return isLoggedIn 
    ? children 
    : <Navigate to="/login" replace />;
}

带参数跳转

传递 state 参数

react如何跳转页面

navigate('/user', {
  state: { from: 'homepage', timestamp: Date.now() }
});

URL 查询参数

navigate('/search?query=react&page=1');

// 或使用 URLSearchParams
const params = new URLSearchParams({ query: 'react', page: 1 });
navigate(`/search?${params}`);

动态路由跳转

路径参数跳转

// 定义路由
<Route path="/users/:userId" element={<UserProfile />} />

// 跳转代码
navigate('/users/123');

导航守卫

路由拦截示例

import { useEffect } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';

function AuthChecker() {
  const location = useLocation();
  const navigate = useNavigate();

  useEffect(() => {
    if (!isAuthenticated() && location.pathname !== '/login') {
      navigate('/login', { state: { from: location } });
    }
  }, [location, navigate]);

  return null;
}

浏览器历史操作

前进/后退控制

const navigate = useNavigate();

// 后退一页
navigate(-1);

// 前进一页
navigate(1);

// 后退两页
navigate(-2);

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

相关文章

vue实现点击跳转

vue实现点击跳转

Vue 实现点击跳转的方法 在 Vue 中实现点击跳转可以通过以下几种方式: 使用 router-link router-link 是 Vue Router 提供的组件,用于声明式导航。适合在模板中…

vue实现两个登录页面

vue实现两个登录页面

实现多个登录页面的方法 在Vue项目中实现两个不同的登录页面,可以通过路由配置和组件分离的方式完成。以下是具体实现方法: 配置路由文件 在router/index.js中定义两个独立的路由,分别指向…

php实现页面跳转

php实现页面跳转

PHP 页面跳转方法 在 PHP 中,可以通过多种方式实现页面跳转,以下是几种常见的方法: 使用 header() 函数 header() 函数是 PHP 中最常用的跳转方法,通过发送 HTTP 头…

vue实现页面tab

vue实现页面tab

Vue 实现页面 Tab 的方法 使用动态组件 <component :is> 通过 Vue 的动态组件功能,结合 v-for 和 v-if 可以快速实现 Tab 切换效果。 <t…

vue  实现页面返回

vue 实现页面返回

Vue 实现页面返回功能 在Vue中实现页面返回功能,可以通过以下几种方式实现: 使用路由的go方法 通过Vue Router的go方法可以控制页面跳转,传入负数表示后退。 this.$rout…

vue 实现页面滚动

vue 实现页面滚动

实现页面滚动的方法 在Vue中实现页面滚动可以通过多种方式,包括原生JavaScript方法、Vue指令或第三方库。以下是几种常见的方法: 使用原生JavaScript方法 通过window.scr…