当前位置: 首页 > news >正文

React withRouter的使用及源码实现

一 基本介绍

作用: 把不是通过路由切换过来的组件中,将react-router 的 history、location、match 三个对象传入props对象上。比如首页!

默认情况下必须是经过路由匹配渲染的组件才存在this.props,才拥有路由参数,才能使用编程式导航的写法,执行this.props.history.push(‘/detail’)跳转到对应路由的页面

然而不是所有组件都直接与路由相连(通过路由跳转到此组件)的,当这些组件需要路由参数时,使用withRouter就可以给此组件传入路由参数,此时就可以使用this.props

二 withRouter使用

import React from 'react';
import {withRouter} from '../react-router-dom';
class NavHeader extends React.Component{render(){return <div onClick={()=>this.props.history.push('/')}>{this.props.title}</div>}
}export default withRouter(NavHeader);

三 withRouter源码实现

import React from 'react';
import RouterContext from './RouterContext';
function withRouter(OldComponent){return props=>(<RouterContext.Consumer>{(value)=>(<OldComponent {...value} {...props}/>)}</RouterContext.Consumer>)
}
export default withRouter;

相关文章:

  • AVL 树
  • Rocketmq java hello world 入门案例
  • LaMa Image Inpainting 图像修复 Onnx Demo
  • 贪心算法(算法竞赛、蓝桥杯)--修理牛棚
  • jmeter接口测试
  • Docker 第十九章 : 阿里云个人镜像仓使用
  • FPGA之带有进位逻辑的加法运算
  • docker单机启动mysql、redis容器命令
  • 2023中国PostgreSQL数据库生态大会:洞察前沿趋势,探索无限可能(附核心PPT资料下载)
  • 【SpringBoot3】统一参数校验
  • MySQL数据库基础知识总结(适合小白入门使用)一
  • Swagger3 使用详解
  • ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎
  • MySQL:快照读和当前读
  • liunx操作系统 进程的基本概念
  • [nginx文档翻译系列] 控制nginx
  • angular2 简述
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ES6语法详解(一)
  • HTTP 简介
  • Js基础知识(四) - js运行原理与机制
  • Map集合、散列表、红黑树介绍
  • passportjs 源码分析
  • SOFAMosn配置模型
  • Vue UI框架库开发介绍
  • Vue.js 移动端适配之 vw 解决方案
  • 从tcpdump抓包看TCP/IP协议
  • 搭建gitbook 和 访问权限认证
  • 基于遗传算法的优化问题求解
  • 经典排序算法及其 Java 实现
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 利用jquery编写加法运算验证码
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信开源mars源码分析1—上层samples分析
  • 写代码的正确姿势
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 整理一些计算机基础知识!
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #include到底该写在哪
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $jQuery 重写Alert样式方法
  • (2)Java 简介
  • (ZT)一个美国文科博士的YardLife
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • .net FrameWork简介,数组,枚举
  • .net Stream篇(六)
  • .Net 中Partitioner static与dynamic的性能对比
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded