Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit 165c186

Browse files
committed
Fix data fetching
1 parent 512ecd5 commit 165c186

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

framework/react/data.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,17 @@ export const DataProvider: FC<DataProviderProps> = ({ dataUrl, dataCache, childr
2020
const [data, setData] = useState(() => {
2121
const cached = dataCache.get(dataUrl);
2222
if (cached) {
23+
if (cached.data instanceof Error) {
24+
throw cached.data;
25+
}
2326
if (typeof cached.data === "function") {
24-
const data = cached.data();
25-
if (data instanceof Promise) {
26-
return data.then((data) => {
27+
const res = cached.data();
28+
if (res instanceof Promise) {
29+
return res.then((data) => {
30+
dataCache.set(dataUrl, data);
2731
suspenseData.current = data;
2832
}).catch((error) => {
33+
dataCache.set(dataUrl, error);
2934
suspenseData.current = error;
3035
});
3136
}
@@ -84,7 +89,11 @@ export const DataProvider: FC<DataProviderProps> = ({ dataUrl, dataCache, childr
8489
try {
8590
const data = await res.json();
8691
const dataCacheTtl = dataCache.get(dataUrl)?.dataCacheTtl;
87-
dataCache.set(dataUrl, { data, dataCacheTtl, dataExpires: Date.now() + (dataCacheTtl || 1) * 1000 });
92+
dataCache.set(dataUrl, {
93+
data,
94+
dataCacheTtl,
95+
dataExpires: Date.now() + (dataCacheTtl || 1) * 1000,
96+
});
8897
setData(data);
8998
} catch (_) {
9099
if (optimistic) {

framework/react/router.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ const RouteRoot: FC<{ modules: RouteModule[]; dataCache: Map<string, RouteData>;
228228
{ modules, dataCache, ssrContext },
229229
) => {
230230
const { url, defaultExport } = modules[0];
231+
const dataUrl = url.pathname + url.search;
231232
const errorHandler: FC<{ error: Error }> = ssrContext?.errorBoundaryHandler ?? global.__ERROR_BOUNDARY_HANDLER ??
232233
(({ error }) =>
233234
createElement(Err, {
@@ -241,8 +242,9 @@ const RouteRoot: FC<{ modules: RouteModule[]; dataCache: Map<string, RouteData>;
241242
createElement(
242243
DataProvider,
243244
{
244-
dataUrl: url.pathname + url.search,
245245
dataCache,
246+
dataUrl: dataUrl,
247+
key: dataUrl,
246248
},
247249
typeof defaultExport === "function"
248250
? createElement(

0 commit comments

Comments
 (0)