@@ -16,8 +16,10 @@ import type { Fiber } from 'ReactFiber';
1616import type { PriorityLevel } from 'ReactPriorityLevel' ;
1717
1818var {
19+ cacheContext,
1920 getMaskedContext,
2021 getUnmaskedContext,
22+ isContextConsumer,
2123} = require ( 'ReactFiberContext' ) ;
2224var {
2325 addUpdate,
2830var { hasContextChanged } = require ( 'ReactFiberContext' ) ;
2931var { getComponentName, isMounted } = require ( 'ReactFiberTreeReflection' ) ;
3032var ReactInstanceMap = require ( 'ReactInstanceMap' ) ;
33+ var emptyObject = require ( 'emptyObject' ) ;
3134var shallowEqual = require ( 'shallowEqual' ) ;
3235var warning = require ( 'warning' ) ;
3336var invariant = require ( 'invariant' ) ;
@@ -206,15 +209,17 @@ module.exports = function(
206209 const ctor = workInProgress . type ;
207210 const props = workInProgress . pendingProps ;
208211 const unmaskedContext = getUnmaskedContext ( workInProgress ) ;
209- const context = getMaskedContext ( workInProgress , unmaskedContext ) ;
212+ const needsContext = isContextConsumer ( workInProgress ) ;
213+ const context = needsContext ? getMaskedContext ( workInProgress , unmaskedContext ) : emptyObject ;
210214 const instance = new ctor ( props , context ) ;
211215 adoptClassInstance ( workInProgress , instance ) ;
212216 checkClassInstance ( workInProgress ) ;
213217
214218 // Cache unmasked context so we can avoid recreating masked context unless necessary.
215219 // ReactFiberContext usually updates this cache but can't for newly-created instances.
216- instance . __reactInternalMemoizedUnmaskedChildContext = unmaskedContext ;
217- instance . __reactInternalMemoizedMaskedChildContext = context ;
220+ if ( needsContext ) {
221+ cacheContext ( workInProgress , unmaskedContext , context ) ;
222+ }
218223
219224 return instance ;
220225 }
0 commit comments