我有一条简单的路线:
<h1>display</h1>
<div>
<div class="active">Display</div>
<div class="inactive">Social</div>
<div class="inactive">Email</div>
</div>
和组件:
import Foo from './Foo';
import Bar from './Bar';
const Routes = (
<ReactRouter.Route handler={App} path="/">
<ReactRouter.Route path="foo" handler={Foo} />
<ReactRouter.Route path="foo/:bar" handler={Bar} />
</ReactRouter.Route>
);
当我导航到const Foo = React.createClass({
...
})
...
const Bar = React.createClass({
componentDidMount() {
console.log('props', this.props.params);
},
render() {
console.log(this.props.params);
return (
<div>Bar Component</div>
);
}
});
export default Bar;
时,我会渲染我的/foo
组件。当我导航到Foo
时,我会渲染我的/foo/something
组件但我的Bar
对象是空的。我假设我应该props
与this.props.params
。{
我正在关注http://rackt.github.io/react-router/#Router概述以及Nested details route with react-router not rendering,但没有运气。
答案 0 :(得分:0)
因为你正在使用RR 0.12.4,试试这个:
const Bar = React.createClass({
mixins: [ ReactRouter.State ],
render() {
console.log(this.getParams().bar);
return (
<div>Bar Component</div>
);
}
});
答案 1 :(得分:0)
我设法解决了这个问题。
const Bar = React.createClass({
contextTypes: {
'router': React.PropTypes.func
},
render() {
const router = this.context.router;
const bar = router.getCurrentParams().bar;
return (
<div>{bar}</div>
);
}
});
答案 2 :(得分:0)
反应路由器13.3的建议是使用mixins而不使用上下文。 他们还说要跳过13.2。见https://github.com/rackt/react-router/blob/master/UPGRADE_GUIDE.md