@@ -135,8 +135,6 @@ export function Router(props) {
135
135
// was the most recent render successful (did not suspend):
136
136
const didSuspend = /** @type {RefObject<boolean> } */ ( useRef ( ) ) ;
137
137
didSuspend . current = false ;
138
- // has the route component changed
139
- const routeChanged = useRef ( false ) ;
140
138
141
139
let pathRoute , defaultRoute , matchProps ;
142
140
toChildArray ( props . children ) . some ( ( /** @type {VNode<any> } */ vnode ) => {
@@ -147,7 +145,7 @@ export function Router(props) {
147
145
148
146
/** @type {VNode<any> | undefined } */
149
147
let incoming = pathRoute || defaultRoute ;
150
- useMemo ( ( ) => {
148
+ const routeChanged = useMemo ( ( ) => {
151
149
prev . current = cur . current ;
152
150
153
151
// Only mark as an update if the route component changed.
@@ -156,8 +154,9 @@ export function Router(props) {
156
154
// This hack prevents Preact from diffing when we swap `cur` to `prev`:
157
155
if ( this . __v && this . __v . __k ) this . __v . __k . reverse ( ) ;
158
156
count . current ++ ;
159
- routeChanged . current = true ;
160
- } else routeChanged . current = false ;
157
+ return true ;
158
+ }
159
+ return false ;
161
160
} , [ url ] ) ;
162
161
163
162
const isHydratingSuspense = cur . current && cur . current . __u & MODE_HYDRATE && cur . current . __u & MODE_SUSPENDED ;
@@ -248,8 +247,8 @@ export function Router(props) {
248
247
isLoading . current = false ;
249
248
} , [ path , wasPush , c ] ) ;
250
249
251
- // Note: curChildren MUST render first in order to set didSuspend & prev.
252
- return routeChanged . current
250
+ // Note: cur MUST render first in order to set didSuspend & prev.
251
+ return routeChanged
253
252
? [ h ( RenderRef , { r : cur } ) , h ( RenderRef , { r : prev } ) ]
254
253
: h ( RenderRef , { r : cur } ) ;
255
254
}
0 commit comments