-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pageviews worden dubbel gemeten #38
Comments
Ja, dit lijkt me een prima implementatie. |
Komt het dubbel meten niet doordat je dit in dev mode checkt waar componenten 2 keer gerendered worden? Kortom, denk wel dat het een goede aanvulling is. Misschien zouden we er ook bij moeten zetten dat dit voorbeeld op basis van Next.JS is gemaakt. We hebben al wel een aantal implementaties op de originele manier gedaan, zou wel goed zijn dan om die eens na te lopen. Die zouden nu dus dubbel gemeten worden. |
@martinbroos ik heb het ff dubbel gecheckt. Met de huidige implementatie zijn twee dingen mis, nl. TS error en exhaustive-deps warning. Als je deze twee dingen oplost, wordt de homepage initiëel dubbel gemeten, ook in de prod build (trouwens, in dev mode worden page views ook maar 1 keer gemeten, dus dat is goed). Ik heb de issue description hier aangepast. Als je alleen pathname als dependency op je useEffect hebt, wordt het niet dubbel gemeten. |
Nu we het hier toch over hebben... wat is het verschil tussen {
"router.pathname": "/vacatures/[id]", // deze wordt niet gebruikt, maar even ter illustratie
"router.route": "/vacatures/[id]",
"router.asPath": "/vacatures/409", // deze wordt niet gebruikt, maar even ter illustratie
"pathname (usePathname)": "/vacatures/409"
} |
Hi, ik had toevallig hetzelfde probleem waarbij pagina's dubbel werden getrackt. Ik ontdekte dat dit komt door de Het gebruik van De suggestie van @pepijnvandenhoven om Daarom heb ik een aangepaste versie gemaakt van import { useEffect, useRef } from 'react';
import { useRouter } from 'next/router';
import { useMixpanelContext } from '@freshheads/analytics-essentials';
export default function TrackPageView(): null {
const { pathname, isReady } = useRouter();
const { trackPageView, setEventContext } = useMixpanelContext();
const lastTrackedPageRef = useRef<string | null>(null);
const lastEventContextRef = useRef<string | null>(null);
useEffect(() => {
if (!isReady) return;
const currentPage = {
pathname: pathname,
href: window.location.href,
title: document.title,
};
const currentPageString = JSON.stringify(currentPage);
if (
process.env.NODE_ENV === 'development' &&
lastTrackedPageRef.current === currentPageString
) {
return;
}
lastTrackedPageRef.current = currentPageString;
trackPageView({
data: currentPage,
});
}, [pathname, isReady, trackPageView]);
useEffect(() => {
const newEventContext = {
href: window.location.href || window.location.pathname,
};
const newEventContextString = JSON.stringify(newEventContext);
if (
process.env.NODE_ENV === 'development' &&
lastEventContextRef.current === newEventContextString
) {
return;
}
lastEventContextRef.current = newEventContextString;
setEventContext(newEventContext);
}, [pathname, setEventContext]);
return null;
} |
@pepijnvandenhoven Het idee van een route meegeven is het onderscheid kunenn maken tussen |
@KevinvdBurg ik zou voor de strict mode (dev mode) geen uitzonderingen maken. Je test een keer of tracking werkt en vervolgens zet je het toch uit lijkt me. Strict mode zal in een productie build componenten niet 2 keer gaan renderen. |
Voorbeeld in https://github.com/freshheads/analytics-essentials/blob/develop/doc/mixpanel_setup.md#page-view-events updaten.
pathname
geeft TS error:Type 'null' is not assignable to type 'string | undefined'.ts(2322)
React Hook useEffect has missing dependencies: 'router.route' and 'trackPageView'. Either include them or remove the dependency array.
Wanneer je alle deps include, wordt de initiële homepage pageview de dubbel gemeten (ook in prod). Dit komt doordat
router.isReady
danfalse
is.Voorstel:
The text was updated successfully, but these errors were encountered: