Skip to content

Commit f171eb6

Browse files
committed
revert fetcher changes to allow surfacing immidately
1 parent 5bd2a31 commit f171eb6

File tree

3 files changed

+21
-28
lines changed

3 files changed

+21
-28
lines changed

packages/react-router/lib/components.tsx

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,7 @@ export function RouterProvider({
423423
currentLocation: Location;
424424
nextLocation: Location;
425425
}>();
426-
// let fetcherData = React.useRef<Map<string, any>>(new Map());
427-
let [fetcherData, setFetcherData] = React.useState<Map<string, any>>(
428-
new Map(),
429-
);
426+
let fetcherData = React.useRef<Map<string, any>>(new Map());
430427
let logErrorsAndSetState = React.useCallback(
431428
(newState: RouterState) => {
432429
setStateImpl((prevState) => {
@@ -452,24 +449,12 @@ export function RouterProvider({
452449
newState: RouterState,
453450
{ deletedFetchers, flushSync, viewTransitionOpts },
454451
) => {
455-
setFetcherData((prev) => {
456-
const newFetchers = new Map(prev);
457-
458-
newState.fetchers.forEach((fetcher, key) => {
459-
if (fetcher.data !== undefined) {
460-
newFetchers.set(key, fetcher.data);
461-
}
462-
});
463-
deletedFetchers.forEach((key) => newFetchers.delete(key));
464-
465-
return newFetchers;
452+
newState.fetchers.forEach((fetcher, key) => {
453+
if (fetcher.data !== undefined) {
454+
fetcherData.current.set(key, fetcher.data);
455+
}
466456
});
467-
// newState.fetchers.forEach((fetcher, key) => {
468-
// if (fetcher.data !== undefined) {
469-
// fetcherData.current.set(key, fetcher.data);
470-
// }
471-
// });
472-
// deletedFetchers.forEach((key) => fetcherData.current.delete(key));
457+
deletedFetchers.forEach((key) => fetcherData.current.delete(key));
473458

474459
warnOnce(
475460
flushSync === false || reactDomFlushSyncImpl != null,
@@ -757,7 +742,7 @@ export function RouterProvider({
757742
<>
758743
<DataRouterContext.Provider value={dataRouterContext}>
759744
<DataRouterStateContext.Provider value={state}>
760-
<FetchersContext.Provider value={fetcherData}>
745+
<FetchersContext.Provider value={fetcherData.current}>
761746
<ViewTransitionContext.Provider value={vtContext}>
762747
<Router
763748
basename={basename}

packages/react-router/lib/rsc/browser.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -746,8 +746,7 @@ export function RSCHydratedRouter({
746746
}
747747
}, []);
748748

749-
let [{ fetchers, routes, state }, setState] = React.useState(() => ({
750-
fetchers: new Map(router.state.fetchers),
749+
let [{ routes, state }, setState] = React.useState(() => ({
751750
routes: cloneRoutes(router.routes),
752751
state: router.state,
753752
}));
@@ -757,7 +756,6 @@ export function RSCHydratedRouter({
757756
router.subscribe((newState) => {
758757
React.startTransition(() => {
759758
setState({
760-
fetchers: new Map(newState.fetchers),
761759
routes: cloneRoutes(router.routes),
762760
state: newState,
763761
});
@@ -770,11 +768,10 @@ export function RSCHydratedRouter({
770768
() =>
771769
({
772770
...router,
773-
fetchers,
774771
state,
775772
routes,
776773
}) as typeof router,
777-
[router, fetchers, routes, state],
774+
[router, routes, state],
778775
);
779776

780777
React.useEffect(() => {
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
1+
import { useFetcher } from "react-router";
12
import type { Route } from "./+types/product";
23

34
export function loader({ params }: Route.LoaderArgs) {
45
return { name: `Super cool product #${params.id}` };
56
}
67

78
export default function Component({ loaderData }: Route.ComponentProps) {
8-
return <h1>{loaderData.name}</h1>;
9+
const fetcher = useFetcher();
10+
11+
return (
12+
<>
13+
<h1>{loaderData.name}</h1>
14+
<button onClick={() => fetcher.load("/products/fetcher")}>
15+
Load via Fetcher
16+
</button>
17+
{fetcher.data && <pre>{JSON.stringify(fetcher.data, null, 2)}</pre>}
18+
</>
19+
);
920
}

0 commit comments

Comments
 (0)