无法读取未定义的属性'pushState'

Emo*_*Emo 5 javascript url-routing reactjs react-router

我对React Router有这个简单的配置.我有另一个基本上用...包装,这是有效的.但是这一次没有(当然我试着用不同的实现方式使用像在建议的答复这个职位等等.

控制台错误是这篇文章的标题.使用ES6和react-router v.1与基于散列的路由.

我阅读了很多文章,对于简单的路由实施来说太不必要了,而且现在几乎很讨厌反应和反应路由器.请帮忙.

    componentWillReceiveProps() {
       this.contextTypes = {
          history: React.PropTypes.object
       }
    },
    _handleRoute(e) {
       e.preventDefault()
       this.history.pushState(null, `/somepath`);
    },
    render() {
        return(
          <div onClick={this._handleRoute}>
            Some Content.
          </div>
        );
      } 
Run Code Online (Sandbox Code Playgroud)

要么:

render() {
        return(
          <div>
            <Link to={`/somepath`}> link </Link>
          </div>
        );
      }
Run Code Online (Sandbox Code Playgroud)

Emo*_*Emo 3

反应路由器 v1:

历史对象中有为此目的创建的 PushState 方法。

首先,分配给 router 的组件必须为子组件提供 pushState 方法作为函数 prop:

//Router Component
render ()
  return (
    <SomeComponent changeRoute={this.props.history.pushState}
  )
Run Code Online (Sandbox Code Playgroud)

然后,在我想要更改函数中的路由的组件中,我只需执行以下操作:

//SomeComponent
onClick() {
  this.props.changeRoute(null, 'somepath', {query: "something"});
}
Run Code Online (Sandbox Code Playgroud)

React 路由器 v.2

import {browserHistory} from 'react-router';

//SomeComponent

browserHistory.push('somepath');
Run Code Online (Sandbox Code Playgroud)