Eu exporto um onRouteUpdate
de gatsby-browser.js
assim:
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;
};
Isso funciona bem, mas quando há links âncora em uma página, ele dispara sempre que um deles é clicado.
Eu tentei apenas disparar page()
nas atualizações de rota action === 'PUSH'
, mas isso bloqueia o evento em todos os carregamentos iniciais da página.
Há alguma maneira de remover eventos de link de âncora desse rastreamento?
Olá, @brandonmp Talvez verifique em window.location.href
se o personagem #
está presente?
@sebastienfi ele está dizendo que uma atualização de hash (o que acontece quando você clica em uma âncora) não deve acionar a API onRouteUpdate
. O que me parece bastante razoável. As atualizações de hash devem ocorrer apenas em uma única página onde a API deve ser acionada apenas ao alternar entre páginas.
@brandonmp adoraria que um PR https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112
Talvez colocar a função em um arquivo diferente e adicionar alguns testes?
Não tenho certeza quando, mas não disparamos mais onRouteUpdate
em alterações de rota.