关于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 相关文章推荐
Javascript中的isNaN函数使用说明
Nov 10 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
Javascript对象Clone实例分析
Jun 09 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
vue移动端城市三级联动组件使用详解
Jul 26 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
php操作excel文件 基于phpexcel
2010/07/02 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
Python3基础之基本运算符概述
2014/08/13 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
python自动化办公操作PPT的实现
2021/02/05 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
财务总经理岗位职责
2014/02/16 职场文书
售后服务经理岗位职责范本
2014/02/22 职场文书
师德师风演讲稿
2014/05/05 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书