zoukankan      html  css  js  c++  java
  • 解决 reactrouter / reactrouterdom v4 history不能访问的问题

    首先使用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 :

  • 相关阅读:
    Cookies和Session的定义与区别
    selenium元素定位篇
    http协议基础教程
    selenium自动化基础知识
    数组基础练习
    软件生命周期及其相关文档
    作业1
    作业2
    第四次个人作业关于微软必应词典客户端 的案例分析
    自我期许
  • 原文地址:https://www.cnblogs.com/rusr/p/7831813.html
Copyright © 2011-2022 走看看