أقوم بتصدير 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
. الذي يبدو معقولا جدا بالنسبة لي. يجب أن تحدث تحديثات التجزئة فقط داخل صفحة واحدة حيث يكون المقصود من واجهة برمجة التطبيقات أن يتم تشغيلها فقط عند تبديل الصفحات.
سيحبbrandonmp العلاقات العامة لتصفية تغييرات التجزئة داخل نفس الصفحة هنا! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112
ربما وضع الوظيفة في ملف مختلف وإضافة بعض الاختبارات؟
لست متأكدًا من الوقت الذي لا نطلق فيه onRouteUpdate
عند تغيير المسار بعد الآن.