@@ -410,7 +410,6 @@ export function RouterProvider({
410410 unstable_transitions,
411411} : RouterProviderProps ) : React . ReactElement {
412412 let [ _state , setStateImpl ] = React . useState ( router . state ) ;
413- let [ pending , startTransition ] = React . useTransition ( ) ;
414413 // @ts -expect-error - Needs React 19 types
415414 let [ state , setOptimisticState ] = React . useOptimistic ( _state ) ;
416415 let [ pendingState , setPendingState ] = React . useState < RouterState > ( ) ;
@@ -424,7 +423,10 @@ export function RouterProvider({
424423 currentLocation : Location ;
425424 nextLocation : Location ;
426425 } > ( ) ;
427- let fetcherData = React . useRef < Map < string , any > > ( new Map ( ) ) ;
426+ // let fetcherData = React.useRef<Map<string, any>>(new Map());
427+ let [ fetcherData , setFetcherData ] = React . useState < Map < string , any > > (
428+ new Map ( ) ,
429+ ) ;
428430 let logErrorsAndSetState = React . useCallback (
429431 ( newState : RouterState ) => {
430432 setStateImpl ( ( prevState ) => {
@@ -450,12 +452,24 @@ export function RouterProvider({
450452 newState : RouterState ,
451453 { deletedFetchers, flushSync, viewTransitionOpts } ,
452454 ) => {
453- newState . fetchers . forEach ( ( fetcher , key ) => {
454- if ( fetcher . data !== undefined ) {
455- fetcherData . current . set ( key , fetcher . data ) ;
456- }
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 ;
457466 } ) ;
458- deletedFetchers . forEach ( ( key ) => fetcherData . current . delete ( key ) ) ;
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));
459473
460474 warnOnce (
461475 flushSync === false || reactDomFlushSyncImpl != null ,
@@ -487,7 +501,7 @@ export function RouterProvider({
487501 } else if ( unstable_transitions === false ) {
488502 logErrorsAndSetState ( newState ) ;
489503 } else {
490- startTransition ( ( ) => {
504+ React . startTransition ( ( ) => {
491505 if ( unstable_transitions === true ) {
492506 // @ts -expect-error - Needs React 19 types
493507 setOptimisticState ( ( state ) => ( {
@@ -600,7 +614,7 @@ export function RouterProvider({
600614 if ( unstable_transitions === false ) {
601615 logErrorsAndSetState ( newState ) ;
602616 } else {
603- startTransition ( ( ) => {
617+ React . startTransition ( ( ) => {
604618 if ( unstable_transitions === true ) {
605619 setOptimisticState ( ( state : any ) => ( {
606620 ...state ,
@@ -743,7 +757,7 @@ export function RouterProvider({
743757 < >
744758 < DataRouterContext . Provider value = { dataRouterContext } >
745759 < DataRouterStateContext . Provider value = { state } >
746- < FetchersContext . Provider value = { fetcherData . current } >
760+ < FetchersContext . Provider value = { fetcherData } >
747761 < ViewTransitionContext . Provider value = { vtContext } >
748762 < Router
749763 basename = { basename }
0 commit comments