Sans y compris le code encore, je me demande si quelqu'un a couru dans un problème où vous:Erreur dans le composant React provoquant le ré-rendu de l'application, ce qui provoque une boucle infinie. Pourquoi?
- ont une composante qui est enveloppé dans
connect
et, dans mon casapollo-client
- ont des composants enfants aussi enveloppé dans
connect
que faire une dépêche àcomponentWillMount
- Throw une erreur dans un composant enfant
- Obtenez une boucle infinie
La situation dans laquelle je suis est que tout enfant qui lance une erreur provoque à nouveau le composant parent render
et tous les enfants semblent exécuter componentWillMount
, mais n'exécutent pas componentWillUnmount
.
L'erreur n'est pas consignée et n'apparaît pas dans la console tant que la pile d'appels n'a pas débordé. Cela les amène tous à se reconnecter à Redux, à répartir l'action et à relancer l'erreur car ils se remontent, ce qui provoque la boucle.
Je peux essayer de repro, mais cela prendra un peu de temps, je me demandais juste si quelqu'un a rencontré un problème similaire qui pourrait offrir un endroit pour regarder.
N'a pas utilisé Apollo et ne peux pas dire que je reconnais le problème. Mais à des fins de débogage, j'essaierai probablement de faire une vérification dans componentWillMount avant de renvoyer l'action, et de voir si je pourrais casser la boucle et espérer que l'erreur ne se perdrait pas de cette façon. Ou utilisez des points d'arrêt dans 'componentWillMount' pour pouvoir l'arrêter à tout moment. Et utilisez des outils comme Redux devtools pour voir quelles actions ont été envoyées et si elles contiennent la charge utile attendue, etc. https://github.com/zalmoxisus/redux-devtools-extension – jonahe