Gatsby: Ne pas déclencher onRouteUpdate sur les mises à jour de hachage

Créé le 2 oct. 2017  ·  3Commentaires  ·  Source: gatsbyjs/gatsby

J'exporte un onRouteUpdate depuis gatsby-browser.js comme ceci:

export const onRouteUpdate = ({ location, action }) => {
    if (
        window.location &&
        typeof window.location.href === 'string' &&
        window.location.href.includes('www.example.com') // make sure we're on live site
    ) {
        window.analytics.page();
    } else {
        console.log('PAGE: ', window.location.href, action, location);
    }
    return;
};

Cela fonctionne bien, mais lorsqu'il y a des liens d'ancrage sur une page, il se déclenche à chaque fois que l'un d'eux est cliqué.

J'ai juste essayé de déclencher les page() sur les mises à jour de la route action === 'PUSH' , mais cela bloque l'événement sur tous les chargements de page initiaux.

Existe-t-il un moyen de supprimer les événements de lien d'ancrage de ce suivi?

documentation question or discussion

Tous les 3 commentaires

Salut @brandonmp Peut-être vérifier window.location.href si le caractère # est présent?

@sebastienfi, il dit qu'une mise à jour de hachage (ce qui se passe lorsque vous cliquez sur une ancre) ne devrait pas déclencher l'API onRouteUpdate . Ce qui me semble assez raisonnable. Les mises à jour de hachage ne doivent se produire que dans une seule page où l'API est destinée à être déclenchée uniquement lors du changement de page.

@brandonmp adorerait un PR filtrant les changements de hachage dans la même page ici! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112

Peut-être mettre la fonction dans un fichier différent et ajouter quelques tests?

Je ne sais pas quand mais nous ne déclenchons plus onRouteUpdate sur les changements de route.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

jaanhio picture jaanhio  ·  3Commentaires

jimfilippou picture jimfilippou  ·  3Commentaires

theduke picture theduke  ·  3Commentaires

totsteps picture totsteps  ·  3Commentaires

ferMartz picture ferMartz  ·  3Commentaires