ReactJS:传递参数从路由器反应路由器到组件
我试图将渲染函数的值传递给组件:
= react_component('App', props: {test: 'abc'}, prerender: false)
Routes.jsx
<Route path="/" component={App} >
App.jsx(组件)
class App extends React.Component {
render() {
return (
<Header test={this.props.test}>
</Header>
{this.props.children}
<Footer />
);
}
}
App.propTypes = { test: PropTypes.string };
对于这个完整的流程似乎没有一个连贯的答案。
我已经尝试了以下内容:
<Route path="/" component={() => (<App myProp="value" />)}/>
但是这仍然没有回答提取初始渲染调用提供的值(react_component)的问题
寻找关于如何将参数从“视图”传递到“响应路由器”到“组件”的端到端解答
我们将从观点开始:
<%= react_component('MyRoute', {test: 123}, prerender: false) %>
现在我们将创建一个组件来保存我们的route
:
class MyRoute extends Component{
constructor(props){
super(props)
}
render(){
return(
<Switch>
<Route path="/" render={() => <App test={this.props.test} />} />
<Route path="/login" component={Login} />
</Switch>
)
}
}
如您所见,我们将test
道具从Route
组件传递到App
组件。 现在我们可以在App
组件中使用test
道具:
class App extends Component{
constructor(props){
super(props)
}
render(){
return(
<h1>{this.props.test}</h1>
)
}
}
<Route path="/" render={attr => <App {...attr} test="abc" />} />
在路由器v3中,你会做这样的事情
像这样用Router包装你的App组件
import { withRouter } from 'react-router';
class App extends React.Component {
render() {
return (
<Header test={this.props.test}>
</Header>
{
this.props.children &&
React.clone(this.props.children, {...this.props} )}
<Footer />
);
}
}
App.propTypes = { test: PropTypes.string };
export const APP = withRouter(App);
并像这样构建你的路线......
<Route path="/" component={APP}>
<Route path="/lobby" component={Lobby} />
<Route path="/map" component={GameMap} />
...
</Route>
因此,您的孩子路线将在APP儿童属性内呈现,道具将传递给他们。
希望这可以帮助!
链接地址: http://www.djcxy.com/p/40889.html上一篇: ReactJS: Pass parameter from rails to react router to component
下一篇: Idiomatic Gradle script to build 'debug' and 'release' JAR files