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?
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.