关于react-router/react-router-dom v4 history不能访问问题的解决


Posted in Javascript onJanuary 08, 2018

前言

最近把react-router 升级了一下, 在使用react-router-dom 是,子组件使用this.props.history  找不到了,看看官方文档,找了半天也没找到,因为我是在异步执行完后才跳转页面,需要用到push 或者replace,怎么办啊,国内知识都是你复制我的,我复制你的,都特么垃圾。只能去Google,

最终找到了答案:(看代码一目了然)

解决方法

首先使用router

import React, { Component } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import { Provider } from 'mobx-react';
import stores from '../store/index';
import Bundle from '../components/bundle';
import Hello from 'bundle-loader?lazy!../components/hello.jsx';
// 这是按需加载,对于现在讨论的问题没有影响
const HelloAPP = () => (
 <Bundle load={Hello}>
  {(Hello) => <Hello />}
 </Bundle>
);
export default class App extends Component {
 constructor(props) {
 super(props);
 }
 render() {
 return (
  <Provider { ...stores }>
  <BrowserRouter basename="/">
   <Route path="/" component={HelloAPP}/>
  </BrowserRouter>
  </Provider>
 );
 };
}

接着是子组件的使用history

import React, { Component } from 'react';
// 需要这步,你要npm 这个,
import PropTypes from 'prop-types';
export default class Hello extends Component {
 constructor(props) {
 super(props);
 }
 // 这一步是重点
 static contextTypes = {
 router: PropTypes.object.isRequired
 };
 test = () => {
 console.log(this.context);
 setTimeout(() => {
  this.context.router.history.push("/otherPath");
 }, 1000);
 };
 render() {
 return (
  <div>
  <button onClick={this.test}>按钮</button>
  </div>
 );
 };
}

让我们看看this.context :

关于react-router/react-router-dom v4 history不能访问问题的解决

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
28个JS验证函数收集
Mar 02 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
js中的replace方法使用介绍
Oct 28 Javascript
JavaScript splice()方法详解
Sep 22 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
Jun 12 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
Vue实现回到顶部和底部动画效果
Jul 31 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 #Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 #Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 #Javascript
深入理解 webpack 文件打包机制(小结)
Jan 08 #Javascript
webpack构建的详细流程探底
Jan 08 #Javascript
详解ES6中的代理模式——Proxy
Jan 08 #Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 #Javascript
You might like
PHP5 面向对象程序设计
2008/02/13 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python实现控制COM口的示例
2019/07/03 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
详解Anaconda 的安装教程
2020/09/23 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
中学教师请假制度
2014/02/03 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
纠风工作实施方案
2014/03/15 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
简历中自我评价范文
2015/03/11 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python