Gatsby: Lösen Sie onRouteUpdate nicht bei Hash-Updates aus

Erstellt am 2. Okt. 2017  ·  3Kommentare  ·  Quelle: gatsbyjs/gatsby

Ich exportiere ein onRouteUpdate aus gatsby-browser.js wie folgt:

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

Dies funktioniert einwandfrei, aber wenn eine Seite Ankerlinks enthält, wird sie jedes Mal ausgelöst, wenn auf einen von ihnen geklickt wird.

Ich habe versucht, nur die page() auf action === 'PUSH' Routenaktualisierungen auszulösen, aber das blockiert das Ereignis bei allen anfänglichen Seitenladevorgängen.

Gibt es eine Möglichkeit, Ankerlink-Ereignisse aus diesem Tracking zu entfernen?

documentation question or discussion

Alle 3 Kommentare

Hi @brandonmp Vielleicht checken Sie window.location.href wenn # Zeichen vorhanden ist?

@sebastienfi er sagt, dass ein Hash-Update (was passiert, wenn Sie auf einen Anker klicken) die onRouteUpdate API nicht auslösen sollte. Was mir ziemlich vernünftig erscheint. Hash-Updates sollten nur innerhalb einer einzelnen Seite erfolgen, auf der die API nur beim Seitenwechsel ausgelöst werden soll.

@brandonmp würde es lieben, wenn ein PR Hash-Änderungen auf derselben Seite hier herausfiltert! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112

Vielleicht die Funktion in eine andere Datei stellen und ein paar Tests hinzufügen?

Ich bin mir nicht sicher, wann, aber wir feuern nicht mehr onRouteUpdate bei Routenänderungen ab.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

3CordGuy picture 3CordGuy  ·  3Kommentare

kalinchernev picture kalinchernev  ·  3Kommentare

mikestopcontinues picture mikestopcontinues  ·  3Kommentare

rossPatton picture rossPatton  ·  3Kommentare

jimfilippou picture jimfilippou  ·  3Kommentare