关于react-router/react-router-dom v4 history不能访问问题的解决
2018-01-08 13:44
996 查看
前言
最近把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不能访问的问题
- react实战--antd、react-router-dom v4 解决菜单和地址同步问题
- 关于oracle可以本地访问不能远程被访问的问题解决思路
- react-router V4 版本不能嵌套路由的问题
- react-router browserHistory刷新页面404问题解决方法
- 【React-Router】关于browserHistory出现did not match any routes的问题
- 解决 react-router 中 history is 'undefined' 的问题
- 关于gcc on windows的“拒绝访问”问题的解决方法
- 关于“ASP.NET 无权访问所请求的资源”问题解决
- 解决DNS污染导致Onedrive在贵国大陆地区不能访问的问题
- 解决PHPWind局域网不能访问问题
- 关于IIS 7.0 局域网无法访问的解决方法 windows7 iis局域网不能访问
- 关于anjuta不能设置断点问题的解决
- 关于访问 IIS 元数据库错误的问题 解决!!
- 关于IIS 对temp目录访问权限问题的解决方法
- 试着用React写项目-利用react-router解决跳转路由等问题(三)
- iOS指南系列:如何解决奔溃问题-关于内存访问续2
- 解决Cesium发布服务器外不能访问的问题
- 解决Three.js中使用OrbitControls导致不能选中DOM的问题
- 100%解决XP不能访问win7!!局域网问题之最佳解决