我制作的每个React应用程序(实际上只有一个小的)使用actions up, data down
方法,其中(据我所知)组件通过调用this.props.somePropertyName
从父组件接收数据。我现在正在尝试react-router and none of the examples given似乎让子组件通过props
接收数据,而且从我看到的情况来看,没有很容易将道具传递给子组件(除了{{ 1}}。在下面的示例中,我将一个端点从App传递给HomePage组件。在HomePage组件中,我获取数据(博客帖子列表)并希望将单个帖子传递给PostDetail组件(作为但是我不能这样做。我不想使用react-router“params”传递所有数据,因为在params中传递的任何内容都会在url中结束。
问题:在下面的代码中,如何将数据传递给链接到PostDetail组件,因此我可以在PostDetail组件中调用<RouteHandler/>
之类的内容?
this.props.postBody
问题:如何将数据传递给链接到PostDetail组件,因此我可以在PostDetail组件中调用var App = React.createClass({
render: function(){
return (
<div>
<RouteHandler source="/my-api-data-source/"/>
</div>
)
}
})
var routes = (
<Route name="main path="/" handler={App}>
<DefaultRoute name="homepage" handler={HomePage}>
<Route name="post" path=":postId" hander={PostDetail}>
</Route>
)
var HomeComponent = React.createClass({
componentDidMount: function(){
$.get(this.props.source, function (result){
if(this.isMounted()){
this.setState({
posts: result
})
}
}
}
render: function(){
return (
//code omitted --I loop through posts array to create a list of links to posts like this
<ul>
<li>Link to "post" params={postId: somePostId}>post.title</li>
<li>Link to "post" params={postId: somePostId}>post.title</li>
<li>Link to "post" params={postId: somePostId}>post.title</li>
</ul>
)
}
})
之类的内容? (另外,想象一下我有几条不同的路线,并希望将不同的道具传递到不同的路线)
this.props.postBody
请注意,我的问题不是this question的重复,因为我的问题中的var PostDetail = React.createClass({
render: function(){
return (
<div>
<h2>want to call `this.props.title` here </h2>
want to call `this.props.postBody` here
want to call `this.props.postComments` here etc
</div>
)
}
)}
来自HomePage路由,即我无法将PageDetail组件与HomePage组件包装为一种方式将主页中的道具传递给PageDetail(正如我链接的SO答案所示)