← Retour aux issues

Optimisation : rappel de state qui cause un rerendu

publié le , mis à jour
Avatar Codeberg de laemlaem

Clic sur un lieu -> boulangerie dans state. On le ferme, closeFeature -> allez = null, cool. Clic sur un autre -> useMapClick met le state avec la données OSM -> allezValue revient à la valeur boulangerie, puis à la nouvelle. Ça provoque un rerendu inutile.

  1. Avatar Codeberg de laemlaem

    Deuxième problème, probablement plus ciblé : le calendrier des arrêts de bus est rendu à chaque déplacement sur la carte.

  2. Avatar Codeberg de laemlaem

    OK pour le 1, 7e4005cbb résoud la reminiscence (sans entrainer de bug comme sur le double clic j'espère), mais pas le sujet des coordonnées URL vs OSM non compressé. Donc voir le log olive vers, vers est réécri avec d'autres coordonnées, déclenchant une réécriture de osmFeature etc. qu'on pourrait éviter.

  3. Avatar Codeberg de laemlaem

    Ah, trouvé pour le 2). @pmiossec c'est ici, tu crées un objet directement dans un render react.

    https://codeberg.org/cartes/web/commit/5b5ddd8efa32c88bcfe2f2f0e1ea2743ca217ffd

    Du coup à chaque changement de n'importe quel état de Container, et il y en a beaucoup beaucoup, transportStopData sera recréé et toute la chaine qui l'utilise va être rerendu. Donc à chaque mouvement de la carte ici.

    D'où le useMemo plus haut. Je corrige.

  4. Avatar Codeberg de laemlaem

    Voilà c'est un peu mieux pour 2, j'ai ajouté un memo() sur OsmFeature, mais je constate que sur Firefox l'ouverture du calendrier rame complètement, sur Chrome pas du tout.


✏️ Participer à la discussion