React常见跳转方式汇总

在React中,路由跳转通常是通过使用react-router-dom库实现的,它是React的一个第三方库,专门用于处理在React应用程序中的路由。以下是如何在不同的情况下使用react-router-dom进行路由跳转:

使用<Link><NavLink>组件

这是进行路由跳转最基本的方法,它会在你的应用中生成一个链接,用户可以点击它来进行页面跳转。

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

function App() {
  return (
    <div>
      <Link to="/about">About</Link>
    </div>
  );
}

使用useHistory Hook

在React Router v5中,useHistory是一个hook,它可以让你访问history实例,这可以用来导航。

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

function MyComponent() {
  let history = useHistory();

  function handleClick() {
    history.push('/home');
  }

  return (
    <button type="button" onClick={handleClick}>
      Go home
    </button>
  );
}

使用useNavigate Hook

从React Router v6开始,useHistoryuseNavigate取代。useNavigate是一个hook,它让你可以进行声明式的、不可逆的导航。

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

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

  function handleClick() {
    navigate('/home');
  }

  return (
    <button type="button" onClick={handleClick}>
      Go home
    </button>
  );
}

使用<Redirect>组件

如果你需要在渲染时进行路由跳转,可以使用<Redirect>组件。

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

function MyComponent({ isLoggedIn }) {
  if (!isLoggedIn) {
    return <Redirect to="/login" />;
  }

  return <div>Welcome back!</div>;
}

使用navigate函数(在组件外)

如果你需要在一个不是React组件的地方进行导航(例如,在Redux action中),你可以创建一个history实例,并在整个应用中使用它。

import { createBrowserHistory } from 'history';

export const history = createBrowserHistory();

// 然后在需要的地方使用
history.push('/some/path');

然后在你的<Router>组件中使用这个自定义的history实例。

import { Router } from 'react-router-dom';
import { history } from './yourHistoryFile';

function App() {
  return (
    <Router history={history}>
      {/* your routes */}
    </Router>
  );
}

确保你使用的是与你的React Router版本相对应的API和组件。React Router的API在不同的版本之间有所不同,以上示例主要基于React Router v5和v6。

相关推荐

  1. React常见方式汇总

    2024-03-27 09:28:04       19 阅读
  2. React中的页面方式详解

    2024-03-27 09:28:04       38 阅读
  3. react和传参两种方式

    2024-03-27 09:28:04       35 阅读
  4. vue方式

    2024-03-27 09:28:04       38 阅读
  5. js有哪些常用页面方法(补)

    2024-03-27 09:28:04       14 阅读
  6. uniapp路由方式

    2024-03-27 09:28:04       24 阅读
  7. 页面的几种方式

    2024-03-27 09:28:04       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 09:28:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 09:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 09:28:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 09:28:04       20 阅读

热门阅读

  1. 特征提取技术实例

    2024-03-27 09:28:04       19 阅读
  2. 【计算机网络教程】(第六版)第2章课后习题答案

    2024-03-27 09:28:04       19 阅读
  3. Chrome安装Vue插件vue-devtools

    2024-03-27 09:28:04       22 阅读
  4. STM32 RC522智能门锁

    2024-03-27 09:28:04       19 阅读
  5. ref 解包细节

    2024-03-27 09:28:04       17 阅读
  6. VUE3——Proxy API 与VUE2——defineProperty API区别

    2024-03-27 09:28:04       18 阅读
  7. ubuntu开启ssh服务

    2024-03-27 09:28:04       16 阅读
  8. leetcode66-Plus One

    2024-03-27 09:28:04       17 阅读
  9. Docker in Docker(DinD)浅析

    2024-03-27 09:28:04       16 阅读
  10. STM32 库函数 3*4矩阵键盘

    2024-03-27 09:28:04       18 阅读
  11. Hive安装配置

    2024-03-27 09:28:04       16 阅读
  12. php获取文件列表(所有子目录文件)

    2024-03-27 09:28:04       19 阅读
  13. Docker搭建Etcd集群

    2024-03-27 09:28:04       18 阅读
  14. Spring Boot设置io临时目录

    2024-03-27 09:28:04       15 阅读
  15. go实现链表

    2024-03-27 09:28:04       17 阅读
  16. 计算机网络——网络基础1

    2024-03-27 09:28:04       15 阅读