【发布时间】:2016-02-10 13:21:10
【问题描述】:
我的应用是带有 react-router 的 ES6 React 应用。我想在一小段延迟后将用户重定向到不同的页面。这是我的 React 组件:
import React from 'react'
import { Navigation } from 'react-router'
export default class Component extends React.Component {
render () {
return (
<div>Component content</div>
)
}
componentDidMount () {
setTimeout(() => {
// TODO: redirect to homepage
console.log('redirecting...');
this.context.router.transitionTo('homepage');
}, 1000);
}
}
Component.contextTypes = {
router: React.PropTypes.func.isRequired
}
和react-router路由表:
render(
<Router>
<Route path='/' component={ App }>
<IndexRoute component={ Component } />
</Route>
</Router>
, document.getElementById('app-container'));
问题是“路由器”属性未传递到组件中。 Chrome 控制台的内容是:
Warning: Failed Context Types: Required context `router` was not specified in `Component`. Check the render method of `RoutingContext`.
redirecting...
Uncaught TypeError: Cannot read property 'transitionTo' of undefined
React 版本是 0.14.2,react-router 版本是 1.0.0-rc4 我在哪里犯错了?
【问题讨论】:
-
我按照stackoverflow.com/questions/32033247/… 的建议创建了构造函数并更改了“路由器”上下文类型的值,但结果是“transitionTo”仍然不可用。
-
PayPal 开发者也有类似问题,但已关闭github.com/paypal/react-engine/issues/82
标签: javascript reactjs react-router ecmascript-harmony