Gatsby: لا تقم بتشغيل onRouteUpdate في تحديثات التجزئة

تم إنشاؤها على ٢ أكتوبر ٢٠١٧  ·  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 . الذي يبدو معقولا جدا بالنسبة لي. يجب أن تحدث تحديثات التجزئة فقط داخل صفحة واحدة حيث يكون المقصود من واجهة برمجة التطبيقات أن يتم تشغيلها فقط عند تبديل الصفحات.

سيحبbrandonmp العلاقات العامة لتصفية تغييرات التجزئة داخل نفس الصفحة هنا! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112

ربما وضع الوظيفة في ملف مختلف وإضافة بعض الاختبارات؟

لست متأكدًا من الوقت الذي لا نطلق فيه onRouteUpdate عند تغيير المسار بعد الآن.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات