Gatsby: Não acionar onRouteUpdate em atualizações de hash

Criado em 2 out. 2017  ·  3Comentários  ·  Fonte: gatsbyjs/gatsby

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?

documentation question or discussion

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

3CordGuy picture 3CordGuy  ·  3Comentários

jimfilippou picture jimfilippou  ·  3Comentários

Oppenheimer1 picture Oppenheimer1  ·  3Comentários

timbrandin picture timbrandin  ·  3Comentários

ferMartz picture ferMartz  ·  3Comentários