React router transitionTo,.substring 不是一个函数

React router transitionTo, .substring is not a function

我有一些简单的组件,我想使用router.transitionTo功能。我在这里做错了什么:

const { Router,
        Route,
        IndexRoute,
        Redirect,
        Link,
        IndexLink
      } = ReactRouter

const Person = React.createClass({

  render() {
    return (
      <div>
      hihihi  
      </div>
    )
  }
})
const App = React.createClass({
  clickHandler() {
    this.context.router.transitionTo('/person/23')
  },
  render() {
    return (
      <div>
        <h1 onClick={this.clickHandler}>React Router Playground</h1>
        {this.props.children}
      </div>
    )
  }
})

App.contextTypes = {
  router: React.PropTypes.object.isRequired,
}

React.render((
  <Router>
    <Route path="/" component={App}/>
    <Route path="/person/:id" component={Person}/>
  </Router>
), document.getElementById('app'))

http://codepen.io/anon/pen/MyerXj?editors=001

在 App 组件中你有方法:

  clickHandler() {
    this.context.router.transitionTo('/person/23')
  },

请改为:

  clickHandler() {
    this.context.router.push('/person/23')
  },

工作代码笔:http://codepen.io/anon/pen/xVOabg

这是因为react-router的实际版本使用router.push改变路由