-1
votes

Réagit-il automatiquement à des intervalles sur la seule fois?

Je commence un intervalle sur composantDidMount , stockant l'ID d'intervalle retourné et en utilisant ClearInterval sur composantwillunmount

Y a-t-il une chose de type de collecte des ordures qui tuerait l'intervalle quand même lorsque le composant démonte? Je sais que cela le tuerait sur un rafraîchissement dur, mais je me demandais de spa.


2 commentaires

Il n'y a pas non, car GC ne sait pas si cela devrait garder l'intervalle ou non


Vous devez l'effacer manuellement. Vous pouvez résumé-le dans un hoc ou même un crochet personnalisé si vous constatez que vous le répétez dans de nombreux endroits.


3 Réponses :


-2
votes

Je ne l'ai pas regardé, mais je ne le pense pas. Parce que réagir n'a aucun moyen de savoir que vous avez initialisé un seinterval. Je vous recommanderais de l'effacer.


0 commentaires

2
votes

Il est nécessaire de ClearInterval sur ComposantDiDunMount . Avec l'introduction de crochets pour réagir ce processus fastidieux de stockage de l'intervalle dans une variable de membre et une compensation ultérieure, il a été rendu beaucoup plus facile. Vous êtes maintenant en mesure de renvoyer une fonction dans useEffect pour effacer les intervalles créés comme: xxx

Veuillez vous reporter à la documentation pour plus d'informations.


1 commentaires

Cela permettra bien sûr de définir un nouvel intervalle sur chaque rendu (vous avez oublié le [] )



5
votes

NO.

par conception, un seinterval () ne serait jamais effacé automatiquement (sauf si vous écrivez une fonction personnalisée qui gère cela en interne).

Lorsque vous créez un intervalle à l'aide de setInterval () , vous affirmez essentiellement que vous souhaitez exécuter une fonction à intervalles réguliers, quelle que soit la portée que l'intervalle a été créé. Même si l'intervalle a été créé dans une portée qui n'est plus accessible de n'importe où, l'intervalle sera toujours exécuté à mesure que la durée de vie d'un intervalle n'a aucune dépendance à la portée de l'exécution de la portée.

Pour cette raison, il est important de toujours nettoyer les intervalles pour empêcher les fonctions de s'accumuler sur chaque mont, ce qui entraînera des fuites de mémoire et des effets secondaires inattendus, car vous aurez plusieurs fonctions à l'intervalle qui font chacun la même chose.


0 commentaires