关于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焦点的方法小结
Oct 08 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
使用JQuery实现的分页插件分享
Nov 05 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
基于Vue单文件组件详解
Sep 15 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 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
php中将数组存到文件里的实现代码
2012/01/19 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Python实现某论坛自动签到功能
2019/08/20 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
python实现批量修改文件名
2020/03/23 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
节约用水演讲稿
2014/05/21 职场文书
无保留意见审计报告
2015/06/05 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android