Gatsby: No active onRouteUpdate en actualizaciones de hash

Creado en 2 oct. 2017  ·  3Comentarios  ·  Fuente: gatsbyjs/gatsby

Exporto un onRouteUpdate de gatsby-browser.js así:

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;
};

Esto funciona bien, pero cuando hay enlaces de anclaje en una página, se activa cada vez que se hace clic en uno de ellos.

Intenté disparar las actualizaciones de ruta page() en action === 'PUSH' , pero eso bloquea el evento en todas las cargas de página iniciales.

¿Alguna forma de eliminar los eventos de enlace de anclaje de este seguimiento?

documentation question or discussion

Todos 3 comentarios

Hola @brandonmp ¿ Quizás verifique window.location.href si el carácter # está presente?

@sebastienfi está diciendo que una actualización de hash (lo que sucede cuando haces clic en un ancla) no debería activar la API onRouteUpdate . Lo que me parece bastante razonable. Las actualizaciones de hash solo deben ocurrir dentro de una sola página donde la API debe activarse solo al cambiar de página.

¡A @brandonmp le encantaría que un PR filtrara los cambios de hash dentro de la misma página aquí! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112

¿Quizás poner la función en un archivo diferente y agregar algunas pruebas?

No estoy seguro de cuándo, pero ya no disparamos onRouteUpdate en los cambios de ruta.

¿Fue útil esta página
0 / 5 - 0 calificaciones