Dans mon application, un utilisateur a plusieurs .. disons «chiens». Le chien actuellement sélectionné apparaît dans l'en-tête et peut être modifié via le menu déroulant de l'en-tête. Lors de la sélection de leur nouveau chien, il marque primary: true
sur le backend, et je fais la mise à jour de l'interface utilisateur en-tête correspondant. A partir de ce moment, toutes les requêtes vers le backend retournent les résultats pour le chien primary
.Réagir: comment remonter un composant frère pour réexécuter componentDidMount?
J'ai une composante Layout.jsx
qui ressemble à ceci:
<Header />
<div>
{this.props.children}
</div>
En this.props.children
, je rends une page d'index pour plusieurs ressources différentes, à savoir un exemple d'un composant enfant pourrait être TreatsContainer
où une demande de réseau est en componentDidMount
à /treats
, et les résultats sont rendus dans ma mise en page. Le problème auquel je suis confronté est que lorsqu'un utilisateur change son chien dans le composant d'en-tête, je voudrais que les autres composants réexécutent la même demande de réseau qu'ils font en componentDidMount
, de sorte que le chien nouvellement sélectionné les données sont affichées. J'ai Redux implémenté dans quelques endroits dans l'application, mais je ne voudrais pas stocker toutes les données dans l'arbre d'état global, car il n'y a aucune limite au nombre de ressources que l'utilisateur peut créer. Ce que je veux dire par là, c'est que je ne veux pas toutes les données de /treats
, /toys
, /foods
, etc. dans un groupe de tableaux. Quelle serait une bonne approche pour gérer cette situation?
Les accessoires dans 'Layout' changent-ils lorsque la sélection dans' Header' change? Sinon, ils devraient probablement. Ensuite, vous pouvez implémenter 'componentWillReceiveProps' avec le même appel réseau (probablement défini en dehors des * deux * méthodes, il n'est donc pas nécessaire de le répéter).Je pense qu'essayer de démonter/remonter est un problème XY qui dément le problème réel. Vous pouvez avoir un seul élément d'état redux pour la sélection d'en-tête et connecter 'Layout' à cela. –