Comment puis-je déterminer à partir de la trace de la pile quel composant particulier, quel gestionnaire d'événements ou hook de cycle de vie est responsable de la violation de la règle ?
Dans la trace de pile fournie, le composant TextLayer est mis en évidence comme la source de la violation. Cependant, il n'est pas clair quel gestionnaire d'événements ou hook de cycle de vie au sein de ce composant est à l'origine du problème.
Pour isoler davantage le problème, vous pouvez utiliser le mot-clé debugger au début de la méthode de rendu du composant. Cela mettra en pause l'exécution et vous permettra d'inspecter l'état et les accessoires du composant dans la console du navigateur. À partir de là, vous pouvez parcourir le code manuellement et identifier la mise à jour d'état spécifique qui déclenche l'avertissement.
Eh bien, comment résoudre le problème lui-même, car mon code a été écrit avec ce piège à l'esprit et essaie déjà de l'éviter, mais certains composants sous-jacents génèrent toujours l'avertissement.
Basé sur le code à condition, il semble qu'un autre composant soit probablement à l'origine de l'avertissement en mettant à jour l'état après le démontage. Pour résoudre ce problème, vous pouvez :
1. Annuler la fonction throttleable :
Votre code tente d'annuler la fonction throttleable dans composantWillUnmount, mais l'implémentation ne semble pas fonctionner correctement. Essayez d'utiliser l'extrait suivant pour annuler correctement la fonction d'étranglement :
componentWillUnmount = () => { window.removeEventListener("resize", this.setDivSizeThrottleable!); this.setDivSizeThrottleable!.cancel(); this.setDivSizeThrottleable = undefined; };
2. Vérifiez le montage du composant avant de mettre à jour l'état :
Dans onDocumentComplete, vous ne devez mettre à jour l'état que si le composant est toujours monté. Ajoutez une vérification pour isComponentMounted avant d'appeler setState:
onDocumentComplete = () => { if (this.isComponentMounted) { try { this.setState({ hidden: false }); this.setDivSizeThrottleable(); } catch (caughtError) { console.warn({ caughtError }); } } };
3. Vérifiez les composants parents :
Si le problème persiste, vous devrez peut-être vérifier les composants parents qui pourraient déclencher la mise à jour de l'état après le démontage du composant Book.
4. Utilisez useEffect Cleanup :
Dans les hooks React, vous pouvez utiliser la fonction de nettoyage useEffect pour effectuer des actions lorsqu'un composant est démonté. Cela peut être utilisé pour annuler des abonnements ou des opérations asynchrones qui pourraient autrement provoquer des mises à jour d'état après le démontage.
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!