Skip to content

Commit 18f1b70

Browse files
authored
Refactor dataStrategy for better use with RSC (#13396)
1 parent 90695fb commit 18f1b70

File tree

2 files changed

+125
-104
lines changed

2 files changed

+125
-104
lines changed

packages/react-router/lib/dom-export/hydrated-router.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,23 @@ function createHydratedRouter({
208208
unstable_middleware: ssrInfo.context.future.unstable_middleware,
209209
},
210210
dataStrategy: getSingleFetchDataStrategy(
211-
ssrInfo.manifest,
211+
() => router,
212+
(routeId: string) => {
213+
let manifestRoute = ssrInfo!.manifest.routes[routeId];
214+
invariant(manifestRoute, "Route not found in manifest/routeModules");
215+
let routeModule = ssrInfo!.routeModules[routeId];
216+
return {
217+
hasLoader: manifestRoute.hasLoader,
218+
hasClientLoader: manifestRoute.hasClientLoader,
219+
// In some cases the module may not be loaded yet and we don't care
220+
// if it's got shouldRevalidate or not
221+
hasShouldRevalidate: routeModule
222+
? routeModule.shouldRevalidate != null
223+
: undefined,
224+
};
225+
},
212226
ssrInfo.context.ssr,
213-
ssrInfo.context.basename,
214-
() => router
227+
ssrInfo.context.basename
215228
),
216229
patchRoutesOnNavigation: getPatchRoutesOnNavigationFunction(
217230
ssrInfo.manifest,

0 commit comments

Comments
 (0)