Immediately trigger renderApplication from RCTRootView init

Reviewed By: fkgozali

Differential Revision: D4849610

fbshipit-source-id: 291a9bcdf0efe47d83130fe2675f3ef04a3f085b
This commit is contained in:
Pieter De Baets 2017-04-21 06:53:28 -07:00 committed by Facebook Github Bot
parent 6138e20379
commit 59378f71db
5 changed files with 13 additions and 9 deletions

View File

@ -99,6 +99,7 @@ RCT_CUSTOM_VIEW_PROPERTY(customProp, NSString, RCTPropsTestView)
_bridge = [[RCTBridge alloc] initWithBundleURL:[bundle URLForResource:@"UIExplorerUnitTestsBundle" withExtension:@"js"] _bridge = [[RCTBridge alloc] initWithBundleURL:[bundle URLForResource:@"UIExplorerUnitTestsBundle" withExtension:@"js"]
moduleProvider:nil moduleProvider:nil
launchOptions:nil]; launchOptions:nil];
RUN_RUNLOOP_WHILE(_bridge.isLoading);
} }
- (void)testSetProps - (void)testSetProps

View File

@ -18,11 +18,13 @@
@interface RCTRootContentView : RCTView <RCTInvalidating> @interface RCTRootContentView : RCTView <RCTInvalidating>
@property (nonatomic, readonly) BOOL contentHasAppeared; @property (nonatomic, readonly, weak) RCTBridge *bridge;
@property (nonatomic, readonly, assign) BOOL contentHasAppeared;
@property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler; @property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler;
@property (nonatomic, readonly, assign) CGSize availableSize;
@property (nonatomic, assign) BOOL passThroughTouches; @property (nonatomic, assign) BOOL passThroughTouches;
@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility; @property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility;
@property (nonatomic, readonly) CGSize availableSize;
- (instancetype)initWithFrame:(CGRect)frame - (instancetype)initWithFrame:(CGRect)frame
bridge:(RCTBridge *)bridge bridge:(RCTBridge *)bridge

View File

@ -19,7 +19,6 @@
@implementation RCTRootContentView @implementation RCTRootContentView
{ {
__weak RCTBridge *_bridge;
UIColor *_backgroundColor; UIColor *_backgroundColor;
} }

View File

@ -92,11 +92,10 @@ NSString *const RCTContentDidAppearNotification = @"RCTContentDidAppearNotificat
} }
#endif #endif
if (!_bridge.loading) {
[self bundleFinishedLoading:([_bridge batchedBridge] ?: _bridge)];
}
[self showLoadingView]; [self showLoadingView];
// Immediately schedule the application to be started
[self bundleFinishedLoading:[_bridge batchedBridge]];
} }
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @""); RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
@ -259,11 +258,14 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
// Use the (batched) bridge that's sent in the notification payload, so the // Use the (batched) bridge that's sent in the notification payload, so the
// RCTRootContentView is scoped to the right bridge // RCTRootContentView is scoped to the right bridge
RCTBridge *bridge = notification.userInfo[@"bridge"]; RCTBridge *bridge = notification.userInfo[@"bridge"];
[self bundleFinishedLoading:bridge]; if (bridge != _contentView.bridge) {
[self bundleFinishedLoading:bridge];
}
} }
- (void)bundleFinishedLoading:(RCTBridge *)bridge - (void)bundleFinishedLoading:(RCTBridge *)bridge
{ {
RCTAssert(bridge != nil, @"Bridge cannot be nil");
if (!bridge.valid) { if (!bridge.valid) {
return; return;
} }

View File

@ -1207,7 +1207,7 @@ RCT_EXPORT_METHOD(dispatchViewManagerCommand:(nonnull NSNumber *)reactTag
{ {
// If there is an active batch layout will happen when batch finished, so we will wait for that. // If there is an active batch layout will happen when batch finished, so we will wait for that.
// Otherwise we immidiately trigger layout. // Otherwise we immidiately trigger layout.
if (![_bridge isBatchActive]) { if (![_bridge isBatchActive] && ![_bridge isLoading]) {
[self _layoutAndMount]; [self _layoutAndMount];
} }
} }