Je travaille sur mon tout premier projet React et je suis un peu bloqué sur la façon de gérer cette situation.Changement de la propriété du composant React en fonction de l'itinéraire
Le composant Header
prend en charge plusieurs thèmes différents, que je dois pouvoir changer en fonction de la page affichée. Voici mon composant racine:
export default class App extends React.Component {
render() {
return (
<Router>
<div>
<Header theme='light' />
<Switch>
<Route exact path='/' />
<Route exact path='/about' component={About} />
<Route exact path='/clients' component={Clients} />
<Route exact path='/services' component={Services} />
</Switch>
</div>
</Router>
);
}
}
Le composant Header
peut recevoir une propriété theme
(un des light
, dark
et solid
). Je veux changer cette propriété de l'intérieur des composants rendus par les routes. Mon idée actuelle est d'ajouter une méthode setHeaderTheme
au composant App
et de passer cette fonction aux composants, mais je ne peux pas déterminer a) comment transmettre des propriétés supplémentaires aux composants via des routes et b) si cela est encore le meilleur plan d'action.
Merci pour les conseils. Puis-je poser une question de suivi rapide, où est le meilleur endroit pour définir le thème d'en-tête dans le composant Clients? La commande appartient-elle à un rappel de cycle de vie? –
Il semble que l'en-tête ait initialement une configuration par défaut que vous allez modifier dans le composant routé. Une fois dans le composant routé comme les clients, vous pouvez changer l'en-tête au début d'un cycle de vie comme componentWillMount(), car vous ne changerez pas l'état des composants des clients et vous n'aurez pas de dépendances. – dpetrini