私はエクスポートonRouteUpdate
からgatsby-browser.js
そうのように:
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;
};
これは問題なく機能しますが、ページにアンカーリンクがある場合、そのうちの1つがクリックされるたびに起動します。
action === 'PUSH'
ルートの更新でpage()
を起動しようとしましたが、すべての初期ページ読み込みでイベントがブロックされます。
この追跡からアンカーリンクイベントを削除する方法はありますか?
こんにちは@brandonmp多分#
文字が存在する場合はwindow.location.href
チェックインしますか?
@sebastienfi彼は、ハッシュ更新(アンカーをクリックするとどうなるか)はonRouteUpdate
APIをトリガーするべきではないと言っています。 これは私にはかなり合理的なようです。 ハッシュの更新は、ページを切り替えるときにのみAPIがトリガーされるように意図されている単一のページ内でのみ発生する必要があります。
@brandonmpは、ここの同じページ内のハッシュ変更をhttps://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112
おそらく、関数を別のファイルに入れて、いくつかのテストを追加しますか?
いつかはわかりませんが、ルート変更時にonRouteUpdate
を起動しなくなりました。