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?
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.