React Router 5.1.0使用useHistory做页面跳转导航

2023-10-29

从React Router v5.1.0开始,新增了useHistory钩子(hook),如果是使用React >16.8.0,编写以下函数组件,使用useHistory即可实现编程时页面跳转导航。

示例:

import { useHistory } from "react-router-dom";
function HomeButton() {
  const history = useHistory();
  function handleClick() {
    history.push("/home");
  }
  return (
    <button type="button" onClick={handleClick}>
      Go home
    </button>
  );
}

 

React Router v4编程式页面跳转的方式(补充)

如果是React Router v4,可以使用以下方法:

  • 使用withRouter组件
  • 使用<Route>标签
  • 使用context

1、使用withRouter组件

withRouter组件将注入history对象作为该组件的属性。这样,不需要处理context,可直接访问push和replace方法。

示例:

import { withRouter } from 'react-router-dom'
const Button = withRouter(({ history }) => (
  <button
    type='button'
    onClick={() => { history.push('/new-location') }}
  >
    Click Me!
  </button>
))

2、使用<Route>标签

<Route>组件不仅用于匹配位置。 您可以渲染无路径的路由,它始终与当前位置匹配。 <Route>组件传递与withRouter相同的属性,因此能够通过history的属性访问history的方法。

import { Route } from 'react-router-dom'
const Button = () => (
  <Route render={({ history}) => (
    <button
      type='button'
      onClick={() => { history.push('/new-location') }}
    >
      Click Me!
    </button>
  )} />
)

3、使用context

这个方法不推荐,context api不是很稳定。示例如下:

const Button = (props, context) => (
  <button
    type='button'
    onClick={() => {
      context.history.push('/new-location')
    }}
  >
    Click Me!
  </button>
)

Button.contextTypes = {
  history: React.PropTypes.shape({
    push: React.PropTypes.func.isRequired
  })
}

推荐使用方法1和2,实现起来也简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Router 5.1.0使用useHistory做页面跳转导航 的相关文章

随机推荐

  • OpenCV

    OpenCV Mat类的copyT clone 赋值的区别 1 clone 2 copyTo 3 等号 赋值 4 验证 先说一下Mat类的结构 Mat类我们可以分成两部分 头部分 矩阵数据部分 头部分 用于记录矩阵数据的大小 类型 数据指针
  • 遗传算法的概念和python实现

    遗传算法是一个非常经典的智能算法 主要用于解决优化问题 本文主要简单介绍一些原理 同时给出一个基于python实现的 用于解决实数内优化问题的模板 本文参考 原理 遗传算法入门详解 知乎 简单介绍 遗传算法就是借鉴生物学中的遗传 首先生成若
  • TCP三次握手详解

    一 什么是TCP三次握手 三次握手 Three way Handshake 是指建立一个TCP连接时 需要客户端和服务器总共发送3个包 三次握手的目的是连接服务器指定端口 建立TCP连接 并同步连接双方的序列号和确认号并交换 TCP 窗口大
  • 你不知道的JavaScript---------- 行为委托

    目录 Prototype 机制 面向委托的设计 类理论 委托理论 比较思维模型 JavaScript创建UI控件 控件创建渲染 ES5类继承形式 控件 类 类形式 委托控件对象 委托形式 更简洁的设计 更好的语法 内省 Prototype
  • C++ 条件编译指令和defined 操作符

    使用条件条件编译指令 可以限制程序中的某些内容要在满足一定条件下才参与编译 因此 可以利用条件编译指令使同一个源程序在不同的编译环境下产生不同的目标代码 在头文件中使用 ifdef和 ifndef是非常重要的 可以防止双重定义错误的出现 常
  • centos8安装docker

    执行yum install docker ce会报错Problem package docker ce 3 19 03 3 3 el7 x86 64 requires containerd io gt 1 2 2 3 but none of
  • Android中RecyclerView分页加载数据

    Android中RecyclerView分页加载数据 在Android开发中 RecyclerView是一个强大的视图容器 常用于展示大量数据 当数据量很大时 一次性加载所有数据可能会导致用户等待时间过长或者内存不足的问题 为了解决这个问题
  • 第十一届蓝桥杯 b组

    答案 3880 代码 package 第十一届蓝桥杯 public class Main01 public static void main String args int t 10000 int time 0 boolean b true
  • [深入浅出Cocoa]iOS网络编程之Socket

    深入浅出Cocoa iOS网络编程之Socket 罗朝辉 http blog csdn net kesalin CC 许可 转载请注明出处 更多 Cocoa 开发文章 敬请访问 深入浅出Cocoa CSDN专栏 http blog csdn
  • 表单+初部认识css

    表单
  • python找零钱程序-Python实现的一个找零钱的小程序代码分享

    Python写的一个按面值找零钱的程序 按照我们正常的思维逻辑从大面值到小面值的找零方法 人民币面值有100元 50元 20元 10元 5元 1元 5角 1角 而程序也相应的设置了这些面值 只需要调用函数时传入您想要找零的金额 程序会自动算
  • 本地项目HTTP,加载静态资源却是HTTPS的问题【已解决】

    本地项目HTTP 加载静态资源却是HTTPS的问题 已解决 参考文章 1 本地项目HTTP 加载静态资源却是HTTPS的问题 已解决 2 https www cnblogs com a record p 9067060 html 备忘一下
  • linux桌面卡死解决办法

    切换回命令行 ctl alt f1 重启桌面 sudo service lightdm restart 切换回桌面 ctl alt f
  • Excel 2016图表标题不能输入中文,图表一直闪动

    问题 最近使用excel2016 发现插入图表后 图表一直闪 无法更改标题或者其它操作 如下图所示 解决 依次选择 文件 gt 选项 gt 加载项
  • diff和patch的使用简介

    diff的使用 我们先help看下diff的介绍 Usage diff OPTION FILES Compare FILES line by line Mandatory arguments to long options are mand
  • ContentProvider原理分析

    转载请注明出处 http blog csdn net a992036795 article details 51612425 一 ContentProvider的介绍 关于ContentProvider的介绍 以及使用可以参考我的上一篇博客
  • uni-app基本入门

    目录 1 uni app介绍 2 uni app特点 3 uni app使用方法 3 1安装uni app 可以使用npm安装uni app 也可以直接下载uni app的源代码 3 2创建uni app项目 可以使用HBuilderX等I
  • 【githubshare】开源技术C/C++ 程序设计

    GitHub 上一个开源的 Notion 替代品 AppFlowy IO 完成了个人笔记 知识库 任务管理的功能结合 除了具备 Notion 的基础核心功能外 该项目还支持自托管与离线模式 数据与安全性可控 开发者可任意定制项目模板 插件
  • uni-app多选select组件,兼容多平台小程序、H5

    目录 介绍 平台差异说明 使用方式 安装 引入 基本使用 默认选中项 回显 配置label value对应的key名称 获取点击确认后的结果 完整示例 API Props Option Attributes Slot Events 介绍 多
  • React Router 5.1.0使用useHistory做页面跳转导航

    从React Router v5 1 0开始 新增了useHistory钩子 hook 如果是使用React gt 16 8 0 编写以下函数组件 使用useHistory即可实现编程时页面跳转导航 示例 import useHistory