• 解决 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 :

  • 相关阅读:
    获取类中虚函数地址
    指向成员函数指针,虚函数指针,静态成员函数指针
    桥接模式 Bridge
    装饰模式 Decorate
    享元模式 FlyWeight
    java中的foreach循环
    java可变参数
    java异常处理
    java设计模式之单例设计模式和多例设计模式
    java四种访问控制权限:public ,default,protected,private
  • 原文地址:https://www.cnblogs.com/rusr/p/7831813.html
Copyright © 2020-2023  润新知