Reactjs 反应路由器发送道具
我的路由器配置如下:Reactjs 反应路由器发送道具,reactjs,react-router,Reactjs,React Router,我的路由器配置如下: <Router history={browserHistory}> <Route path="/"> <IndexRoute component={HomePageContainers} /> <Route path="r/:subreddit_name" component={Subreddit} /> </Route> </Router> 和Home
<Router history={browserHistory}>
<Route path="/">
<IndexRoute component={HomePageContainers} />
<Route path="r/:subreddit_name" component={Subreddit} />
</Route>
</Router>
和HomePage
renderReddits
类似:
<Col md={3} key={reddit.data.id}>
<Reddits key={reddit.data.id} reddit={reddit}/><br/>
</Col>
只要路径是r/:subreddit\u name
make,subreddit
组件就会获得生命和工作。这里我还得到了:subreddit\u name
值,作为路由图的一部分。但是如果您查看reddit
类,则reddit.data
包含Subreddit
的所有信息
我想将reddit.data
作为道具从Route(r)
发送,有可能吗?您需要让HomeComponenet将reddit组件呈现为子组件,如下所示:
<Route path='/home' component="HomeComponent">
<Route path='/reddit' component="RedditComponent">
</Route>
现在,您可以通过克隆子对象来传递道具,如下所示:
<Route path='/home' component="HomeComponent">
<Route path='/reddit' component="RedditComponent">
</Route>
HomeComp
:
render() {
{ this.props.children }
}
render() {
{this.props.children && React.cloneElement(this.props.children, {
someFunctionOrDataToPass: this.someFunctionOrDataToPass
})}
}
这两个方面有何关联?路由器中没有Reddits
组件。@Pavlo:我们也需要根据关系设计路由吗?很抱歉,从新开始!你必须在某个地方安装Reddits
。顺便说一句,你不能通过路由器传递任意数据,所以你可能需要一个商店。是的。听起来你需要某种存储,试试看,或者@Pavlo:Reddits
通过HomePageContainers
装载和呈现。
render() {
{this.props.children && React.cloneElement(this.props.children, {
someFunctionOrDataToPass: this.someFunctionOrDataToPass
})}
}