@@ -12,11 +12,14 @@ import type {ReactComponentInfo} from 'shared/ReactTypes';
12
12
import type { AsyncDispatcher } from 'react-reconciler/src/ReactInternalTypes' ;
13
13
14
14
import { resolveRequest , getCache } from '../ReactFlightServer' ;
15
+ import ReactSharedInternals from '../ReactSharedInternalsServer' ;
15
16
16
17
import { disableStringRefs } from 'shared/ReactFeatureFlags' ;
17
18
18
19
import { resolveOwner } from './ReactFlightCurrentOwner' ;
19
20
21
+ const previousAsyncDispatcher = ReactSharedInternals . A ;
22
+
20
23
function resolveCache ( ) : Map < Function , mixed > {
21
24
const request = resolveRequest ( ) ;
22
25
if ( request ) {
@@ -30,9 +33,19 @@ export const DefaultAsyncDispatcher: AsyncDispatcher = ({
30
33
const cache = resolveCache ( ) ;
31
34
let entry : T | void = ( cache . get ( resourceType ) : any ) ;
32
35
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
+ }
36
49
}
37
50
return entry ;
38
51
} ,
0 commit comments