Skip to content

Commit 81b74ec

Browse files
d16rfacebook-github-bot
authored andcommittedNov 8, 2018
Give eagerly loaded modules precedent over lazily loaded one.
Summary: Before lazily-loading code existed, modules that were already loaded into memory took precedent over modules that were additionally registered. With lazily loading modules, instead of giving eagerly loaded modules precdence, it throws a redbox. This diff fixes that behavior. Reviewed By: PeteTheHeat Differential Revision: D12983805 fbshipit-source-id: fe4fcf35d5c2ca6f9f4e3f0d1d8c2ca35468fb1b
1 parent fe49809 commit 81b74ec

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed
 

‎React/CxxBridge/RCTCxxBridge.mm

+8-2
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,12 @@ - (void)_initializeBridgeLocked:(std::shared_ptr<JSExecutorFactory>)executorFact
534534
}
535535

536536
- (NSArray<RCTModuleData *> *)registerModulesForClasses:(NSArray<Class> *)moduleClasses
537+
{
538+
return [self _registerModulesForClasses:moduleClasses lazilyDiscovered:NO];
539+
}
540+
541+
- (NSArray<RCTModuleData *> *)_registerModulesForClasses:(NSArray<Class> *)moduleClasses
542+
lazilyDiscovered:(BOOL)lazilyDiscovered
537543
{
538544
RCT_PROFILE_BEGIN_EVENT(RCTProfileTagAlways,
539545
@"-[RCTCxxBridge initModulesWithDispatchGroup:] autoexported moduleData", nil);
@@ -549,7 +555,7 @@ - (void)_initializeBridgeLocked:(std::shared_ptr<JSExecutorFactory>)executorFact
549555
// Check for module name collisions
550556
RCTModuleData *moduleData = _moduleDataByName[moduleName];
551557
if (moduleData) {
552-
if (moduleData.hasInstance) {
558+
if (moduleData.hasInstance || lazilyDiscovered) {
553559
// Existing module was preregistered, so it takes precedence
554560
continue;
555561
} else if ([moduleClass new] == nil) {
@@ -682,7 +688,7 @@ - (void)registerExtraLazyModules
682688
lazilyDiscovered:(BOOL)lazilyDiscovered
683689
{
684690
// Set up moduleData for automatically-exported modules
685-
NSArray<RCTModuleData *> *moduleDataById = [self registerModulesForClasses:modules];
691+
NSArray<RCTModuleData *> *moduleDataById = [self _registerModulesForClasses:modules lazilyDiscovered:lazilyDiscovered];
686692

687693
if (lazilyDiscovered) {
688694
#if RCT_DEBUG

0 commit comments

Comments
 (0)
Please sign in to comment.