@@ -12,11 +12,14 @@ import type {ReactComponentInfo} from 'shared/ReactTypes';
1212import type { AsyncDispatcher } from 'react-reconciler/src/ReactInternalTypes' ;
1313
1414import { resolveRequest , getCache } from '../ReactFlightServer' ;
15+ import ReactSharedInternals from '../ReactSharedInternalsServer' ;
1516
1617import { disableStringRefs } from 'shared/ReactFeatureFlags' ;
1718
1819import { resolveOwner } from './ReactFlightCurrentOwner' ;
1920
21+ const previousAsyncDispatcher = ReactSharedInternals . A ;
22+
2023function resolveCache ( ) : Map < Function , mixed > {
2124 const request = resolveRequest ( ) ;
2225 if ( request ) {
@@ -30,9 +33,19 @@ export const DefaultAsyncDispatcher: AsyncDispatcher = ({
3033 const cache = resolveCache ( ) ;
3134 let entry : T | void = ( cache . get ( resourceType ) : any ) ;
3235 if ( entry === undefined ) {
33- entry = resourceType ( ) ;
34- // TODO: Warn if undefined?
35- cache . set ( resourceType , entry ) ;
36+ const chainedEntry : T | void =
37+ previousAsyncDispatcher !== null
38+ ? previousAsyncDispatcher . getCacheForType ( resourceType )
39+ : undefined ;
40+
41+ if ( chainedEntry !== undefined ) {
42+ entry = chainedEntry ;
43+ cache . set ( resourceType , chainedEntry ) ;
44+ } else {
45+ entry = resourceType ( ) ;
46+ // TODO: Warn if undefined?
47+ cache . set ( resourceType , entry ) ;
48+ }
3649 }
3750 return entry ;
3851 } ,
0 commit comments