Gatsby: Jangan memicu onRouteUpdate pada pembaruan hash

Dibuat pada 2 Okt 2017  ·  3Komentar  ·  Sumber: gatsbyjs/gatsby

Saya mengekspor onRouteUpdate dari gatsby-browser.js seperti ini:

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

Ini berfungsi dengan baik, tetapi ketika ada tautan jangkar pada halaman, itu diaktifkan setiap kali salah satunya diklik.

Saya mencoba hanya menembakkan page() pada action === 'PUSH' pembaruan rute, tetapi itu memblokir acara pada semua pemuatan halaman awal.

Adakah cara untuk menghapus peristiwa tautan tautan dari pelacakan ini?

documentation question or discussion

Semua 3 komentar

Hai @brandonmp Mungkin check in window.location.href jika karakter # ada?

@sebastienfi dia mengatakan bahwa pembaruan hash (apa yang terjadi saat Anda mengklik jangkar) seharusnya tidak memicu API onRouteUpdate . Yang tampaknya cukup masuk akal bagi saya. Pembaruan hash hanya boleh terjadi dalam satu halaman di mana API dimaksudkan untuk dipicu hanya saat berpindah halaman.

@brandonmp akan menyukai PR yang memfilter perubahan hash dalam halaman yang sama di sini! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112

Mungkin letakkan fungsi di file yang berbeda dan tambahkan beberapa tes?

Tidak yakin kapan tapi kami tidak mengaktifkan onRouteUpdate pada perubahan rute lagi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat