Я экспортирую 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;
};
Это нормально работает, но когда на странице есть якорные ссылки, они срабатывают каждый раз, когда нажимается одна из них.
Я пробовал просто запускать page()
при обновлениях маршрута action === 'PUSH'
, но это блокирует событие при всех загрузках начальной страницы.
Есть ли способ удалить события ссылки привязки из этого отслеживания?
Привет, @brandonmp Может быть, проверить window.location.href
если присутствует символ #
?
@sebastienfi он говорит, что обновление хеша (что происходит, когда вы нажимаете на якорь) не должно запускать onRouteUpdate
API. Что мне кажется вполне разумным. Обновления хэша должны происходить только в пределах одной страницы, где API должен запускаться только при переключении страниц.
@brandonmp хотел бы, чтобы PR отфильтровывал изменения хэша на той же странице! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112
Может быть, поместить функцию в другой файл и добавить несколько тестов?
Не знаю, когда, но мы больше не запускаем onRouteUpdate
при изменении маршрута.