如何将其他参数传递给我要转换到的组件。
我的routes.js如下。我已经为authorList声明了两个路径,为了特定作者的详细信息宣布了另一个路径。
var routes = (
<Route path="/" component={require('./components/main')}>
<Route path="authors" component={require('./components/authors/authorPage')}/>
<Route path="authors/:authorId" component={require('./components/authors/AuthorDetails')}/>
</Route>
);
module.exports = routes;
在我的authorList页面中,有如下功能。
showAuthorDetails(authorId) {
var myExtraParams = { key1 : val1, key2 : val2};
hashHistory.push(`/authors/${authorId});
}
现在在我的AuthorDetail页面中,我可以通过
获得authorIdthis.props.params.authorId
但我也希望将myExtraParams作为对象传递,但不想在url中声明并传递它。 我想以某种方式在新组件中访问myExtraParams,或许可以这样说来做
this.props.params.myExtraParams
应该给mt这个对象。 (就像使用stateParams在Angular UI路由器中发生的那样)
我该怎么做?
答案 0 :(得分:2)
您可以尝试更改路线的结构:
var routes = (
<Route path="/" component={require('./components/main')}>
<Route path="authors" component={require('./components/authors/authorPage')}>
<Route path="author/:authorId" component={require('./components/authors/AuthorDetails')}/>
</Route>
</Route>
);
然后在你的authorList页面你可以做
...
renderAuth() {
if (this.props.children === null) {
return(
....your default authorList
)
} else {
return React.cloneElement(this.props.children || <div />, {myExtraParams: myExtraParams});
}
}
render() {
<div>
{this.renderAuth()}
</div>
}
showAuthorDetails(authorId) {
hashHistory.push(`/authors/author/${authorId});
}
...
然后您应该能够在authorsDetail页面中访问this.props.myExtraParams
答案 1 :(得分:1)
我正在看这个问题。也许我迟到了,你已经有了解决方案但是如果没有,那么你可以通过
来做到这一点
router.push({
pathname: '/some-route',
search: '?param=123',
state: {
additionalParam: 'value',
},
})}
在接收组件方面,您将获得
this.props.location.state.additionalParam
我希望它有所帮助。如有任何进一步的帮助,请随时告诉我。
由于