Ale*_*ose 7 javascript reactjs react-router react-on-rails
我试图将渲染函数中的值传递给组件:
= react_component('App', props: {test: 'abc'}, prerender: false)
Run Code Online (Sandbox Code Playgroud)
Routes.jsx
<Route path="/" component={App} >
Run Code Online (Sandbox Code Playgroud)
App.jsx(组件)
class App extends React.Component {
render() {
return (
<Header test={this.props.test}>
</Header>
{this.props.children}
<Footer />
);
}
}
App.propTypes = { test: PropTypes.string };
Run Code Online (Sandbox Code Playgroud)
这个完整的流程似乎没有一致的答案.
我尝试过以下方法:
<Route path="/" component={() => (<App myProp="value" />)}/>
Run Code Online (Sandbox Code Playgroud)
但这仍然无法回答初始渲染调用提供的值(react_component)
寻找有关如何将参数从“视图”传递到“反应路由器”再到“组件”的端到端答案
我们将从视图开始:
<%= react_component('MyRoute', {test: 123}, prerender: false) %>
Run Code Online (Sandbox Code Playgroud)
现在我们将创建一个包含我们的组件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>
)
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我们将testprop 从Route组件传递给了App组件。test现在我们可以在组件中使用prop App:
class App extends Component{
constructor(props){
super(props)
}
render(){
return(
<h1>{this.props.test}</h1>
)
}
}
Run Code Online (Sandbox Code Playgroud)