Skip to content

Commit f4a452b

Browse files
Avoid unnecessary router subscribes (#10409)
Co-authored-by: Alexander Nanberg <[email protected]>
1 parent 82ca7c0 commit f4a452b

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"react-router": patch
3+
---
4+
5+
Avoid uneccesary unsubscribe/resubscribes on router state changes

contributors.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- akamfoad
1010
- alany411
1111
- alberto
12+
- alexandernanberg
1213
- alexlbr
1314
- AmRo045
1415
- amsal

packages/react-router/lib/components.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,10 @@ export function RouterProvider({
5757
fallbackElement,
5858
router,
5959
}: RouterProviderProps): React.ReactElement {
60-
let [state, setState] = React.useState(router.state);
61-
6260
// Need to use a layout effect here so we are subscribed early enough to
6361
// pick up on any render-driven redirects/navigations (useEffect/<Navigate>)
64-
React.useLayoutEffect(() => {
65-
return router.subscribe((newState) => {
66-
if (newState !== state) {
67-
setState(newState);
68-
}
69-
});
70-
}, [router, state]);
62+
let [state, setState] = React.useState(router.state);
63+
React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
7164

7265
let navigator = React.useMemo((): Navigator => {
7366
return {

0 commit comments

Comments
 (0)