Gatsby: Не запускать onRouteUpdate при обновлении хэша

Созданный на 2 окт. 2017  ·  3Комментарии  ·  Источник: gatsbyjs/gatsby

Я экспортирую 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' , но это блокирует событие при всех загрузках начальной страницы.

Есть ли способ удалить события ссылки привязки из этого отслеживания?

documentation question or discussion

Все 3 Комментарий

Привет, @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 при изменении маршрута.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

benstr picture benstr  ·  3Комментарии

KyleAMathews picture KyleAMathews  ·  3Комментарии

ferMartz picture ferMartz  ·  3Комментарии

totsteps picture totsteps  ·  3Комментарии

jaanhio picture jaanhio  ·  3Комментарии