如何使用ReactJS通过React路由器传递数据?
我有以下JSON对象如何使用ReactJS通过React路由器传递数据?,reactjs,react-native,react-router,Reactjs,React Native,React Router,我有以下JSON对象 { name: "Jessie" } 我想让它通过我的路由器,这样它就可以显示在我的页面上。例如,这是我的根页面 StaticPage.jsx export default class StaticPage extends React.Component { render() { return ( <div> <Router history={hashHistory}
{ name: "Jessie" }
我想让它通过我的路由器,这样它就可以显示在我的页面上。例如,这是我的根页面
StaticPage.jsx
export default class StaticPage extends React.Component {
render() {
return (
<div>
<Router history={hashHistory}>
<Route path='/' component={Search} />
<Route path='/favorites' component={Favorites} />
</Router>
</div>
);
}
}
导出默认类StaticPage扩展React.Component{
render(){
返回(
);
}
}
所以将这些数据传递给搜索,我想可能看起来像这样
<Route path='/' component={Search} name = {this.props.name}/>
但是,当我这样做时,什么也不会被渲染。我已经对此做了很多研究,并且从我所读到的内容中了解到,不能通过路由器传递对象。这是非常奇怪的bc路由器看起来像一个传统的反应组件,但没有这样的功能。我对工作环境的解释似乎都不清楚。有人能给我提供一个使用此代码的示例吗?我正在使用react路由器3.0。4.0似乎没有什么神奇的解决方案,所以我想在升级之前我应该先问一下。谢谢 这是因为
的道具只渲染组件,而不是您提供的道具
您可以在React Router v4中的
上使用或组件
道具来传递一个函数,该函数返回一个显式传递名称的
元素:
<Route path="/" render={() => <Search name={this.props.name} />} />
但是您应该更喜欢渲染
,否则您将需要大量重新计算。如果您仍计划使用路线道具,还可以执行以下操作:
render={routeProps => <Search name={this.props.name} {...routeProps} />}
render={routeProps=>}
一种完全不同的方法,在我看来更优雅的方法是使用route params并通过URL直接传递名称:
<Route path="/:name" component={Search} />
当您导航到/Bob
时,您可以访问this.props.match.params.name
,它将为您提供“Bob”直接通过路由传递对象数据不是一个好的做法。建议通过以下方式传递参数,如名称或id:
<Route path='/favorites/:name' component={Favorites} />
并从目的地的请求中检索它
这是一个重复问题:您的意思是将其传递到StaticPage
props,还是在URL内传递?在URL内传递到我的搜索页面。我已经通过在静态页面中执行h1测试了它,并且它呈现正确,但是它没有传递到我的页面。所以你将名称作为道具传递到静态页面,你想传递到搜索吗?谢谢大家!我有一些错误,但这只是我需要熟悉RR4的新规则。明天早上我会继续工作,并向您汇报。谢谢您的详细解释。工作起来很有魅力@JessieRichardson没问题,很乐意帮忙@AndrewLi我也在尝试向我的功能组件发送一些道具,但没有通过。您能帮忙吗,有没有其他方法可以将道具传递给功能组件。
<Route path='/favorites/:name' component={Favorites} />