Eine weitere Antwort Frage hier, ich habe eine Lösung für mein Problem, aber für mich scheint es nicht sehr "Reagieren", so dass ich auf eine andere Lösung gehofft hatte.Reagieren Dynamische Menüpunkte über Router
Ich verwende reagieren Router so die Unterseite meines app.js (Einstiegspunkt) ist:
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={Layout}>
<IndexRoute component={Login} ></IndexRoute>
<Route path="searches" component={searches}></Route>
<Route path="notifications" component={notifications}></Route>
</Route>
</Router>
, app);
Nun, wie Sie meine übergeordnete Komponente sehen können Layout-so ist, in meinem Kopf Ich möchte konfigurieren meine (wiederverwendbaren) Komponenten, zum Beispiel möchte ich, dass mein Layout den Titel der Menüelemente an die Header-Komponente weitergibt, und wenn ich zum Beispiel eine Suche lade, möchte ich vielleicht Funktionen usw. an die Suchkomponente übergeben, um sie zu haken hinein Funktionalität ist, so habe ich nach dem in Layout:
export default class Layout extends React.Component {
constructor() {
super();
}
render() {
const containerStyle = {
paddingRight: '5px'
}
// Figure out which props we want based on location.pathname
const {pathname} = this.props.location;
switch(pathname){
case "/searches":
// So now I need to add some props, functions or anything else to this component
theProps = {someProp: "value"}
const theComponent = React.cloneElement(this.props.children, {theProps})
break;
}
return (
< div style={containerStyle} class="container">
< Header menuItems={this.getMenuItemsForScreen()}/ >
{ theComponent}
< Footer/>
< /div>
);
}
}
Also im Grunde, um Requisiten von meinem übergreifenden Layout zu übergeben, muss ich die Komponente klonen und dann noch ein paar Requisiten geben ?? Es fühlt sich nur ein bisschen dreckig an, aber ich kann keinen anderen Weg finden, diese Art von Logik einzubetten.
Dank
Marc