From 7b38de722f29a5823e8d87021bbd2627992de9fe Mon Sep 17 00:00:00 2001 From: Alex Shumsky Date: Thu, 16 Mar 2023 23:37:05 +0300 Subject: [PATCH 1/3] test(Navigate): Navigate in StrictMode --- .../react-router/__tests__/navigate-test.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/react-router/__tests__/navigate-test.tsx b/packages/react-router/__tests__/navigate-test.tsx index cc39aaa3cb..d75690c544 100644 --- a/packages/react-router/__tests__/navigate-test.tsx +++ b/packages/react-router/__tests__/navigate-test.tsx @@ -470,6 +470,28 @@ describe("", () => { " `); }); + + it("does not navigate twice in a row in StrictMode", () => { + let { container } = render( + + + + Page 1} /> + Page 2} /> + } /> + + + + ); + + expect(getHtml(container)).toMatchInlineSnapshot(` + "
+

+ Page 2 +

+
" + `); + }); }); function getHtml(container: HTMLElement) { From 30d4a4dc74b867df0315b1be0aac55b25defb7c8 Mon Sep 17 00:00:00 2001 From: Alex Shumsky Date: Thu, 16 Mar 2023 23:50:29 +0300 Subject: [PATCH 2/3] Fix Navigate component behavior in StrictMode (#10217) --- packages/react-router/lib/components.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react-router/lib/components.tsx b/packages/react-router/lib/components.tsx index efa75820be..cd2fffaa17 100644 --- a/packages/react-router/lib/components.tsx +++ b/packages/react-router/lib/components.tsx @@ -209,6 +209,7 @@ export function Navigate({ let dataRouterState = React.useContext(DataRouterStateContext); let navigate = useNavigate(); + let navigateCalledRef = React.useRef(false); React.useEffect(() => { // Avoid kicking off multiple navigations if we're in the middle of a @@ -217,6 +218,10 @@ export function Navigate({ if (dataRouterState && dataRouterState.navigation.state !== "idle") { return; } + if (navigateCalledRef.current) { + return; + } + navigateCalledRef.current = true; navigate(to, { replace, state, relative }); }); From 0980e865eb3992c10b2adf4eb95282ad7477d195 Mon Sep 17 00:00:00 2001 From: Alex Shumsky Date: Fri, 17 Mar 2023 00:02:33 +0300 Subject: [PATCH 3/3] sign CLA --- contributors.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.yml b/contributors.yml index bb5a3377a3..3771f073c2 100644 --- a/contributors.yml +++ b/contributors.yml @@ -9,6 +9,7 @@ - akamfoad - alany411 - alberto +- alex3d - alexlbr - AmRo045 - amsal