Skip to content

Commit 4cd640a

Browse files
authored
docs(nx-dev): load external script dynamically on route changes (#29355)
Moved the external script loading logic to a dynamic handler triggered on route changes using `useEffect`. This ensures the script is reloaded with each route change and prevents duplicates by removing any pre-existing script.
1 parent 657814c commit 4cd640a

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

nx-dev/nx-dev/pages/_app.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,37 @@ export default function CustomApp({
1515
}: AppProps): JSX.Element {
1616
const router = useRouter();
1717
const gaMeasurementId = 'UA-88380372-10';
18+
// RR2B ---------
19+
const SCRIPT_ID = 'external-js-script';
20+
const SCRIPT_BASE_URL = 'https://s3-us-west-2.amazonaws.com/b2bjsstore/b/';
21+
const SCRIPT_KEY = '0NW1GH7YJ4O4'; //
22+
const SCRIPT_URL = `${SCRIPT_BASE_URL}${SCRIPT_KEY}/${SCRIPT_KEY}.js.gz`;
23+
useEffect(() => {
24+
const handleRouteChange = () => {
25+
const existingScript = document.getElementById(SCRIPT_ID);
26+
if (existingScript) {
27+
existingScript.remove();
28+
}
29+
const script = document.createElement('script');
30+
script.id = SCRIPT_ID;
31+
script.src = SCRIPT_URL;
32+
script.async = true;
33+
document.body.appendChild(script);
34+
};
35+
router.events.on('routeChangeComplete', handleRouteChange);
36+
handleRouteChange();
37+
return () => {
38+
router.events.off('routeChangeComplete', handleRouteChange);
39+
};
40+
}, [router.events, SCRIPT_URL]);
41+
// ---------
42+
1843
useEffect(() => {
1944
const handleRouteChange = (url: URL) =>
2045
sendPageViewEvent({ gaId: gaMeasurementId, path: url.toString() });
2146
router.events.on('routeChangeStart', (url) => handleRouteChange(url));
2247
return () => router.events.off('routeChangeStart', handleRouteChange);
23-
}, [router]);
48+
}, [router.events, gaMeasurementId]);
2449
return (
2550
<>
2651
<DefaultSeo
@@ -153,15 +178,6 @@ export default function CustomApp({
153178
`,
154179
}}
155180
/>
156-
<Script
157-
id="rb2b-script-loader"
158-
strategy="afterInteractive"
159-
dangerouslySetInnerHTML={{
160-
__html: `
161-
!function () {var reb2b = window.reb2b = window.reb2b || [];if (reb2b.invoked) return;reb2b.invoked = true;reb2b.methods = ["identify", "collect"];reb2b.factory = function (method) {return function () {var args = Array.prototype.slice.call(arguments);args.unshift(method);reb2b.push(args);return reb2b;};};for (var i = 0; i < reb2b.methods.length; i++) {var key = reb2b.methods[i];reb2b[key] = reb2b.factory(key);}reb2b.load = function (key) {var script = document.createElement("script");script.type = "text/javascript";script.async = true;script.src = "https://s3-us-west-2.amazonaws.com/b2bjsstore/b/" + key + "/0NW1GH7YJ4O4.js.gz";var first = document.getElementsByTagName("script")[0];first.parentNode.insertBefore(script, first);};reb2b.SNIPPET_VERSION = "1.0.1";reb2b.load("0NW1GH7YJ4O4");}();
162-
`,
163-
}}
164-
/>
165181
</>
166182
);
167183
}

0 commit comments

Comments
 (0)