Props setter for RCTRootView
Reviewed By: javache Differential Revision: D2587673 fb-gh-sync-id: 79fff15b625ed9f4856ec75246ecafd1f7ef95f1
This commit is contained in:
parent
f96c92d75c
commit
db71dde10a
|
@ -75,10 +75,21 @@ extern NSString *const RCTContentDidAppearNotification;
|
|||
@property (nonatomic, strong, readonly) RCTBridge *bridge;
|
||||
|
||||
/**
|
||||
* DEPRECATED: access app properties via appProperties property instead
|
||||
*
|
||||
* The default properties to apply to the view when the script bundle
|
||||
* is first loaded. Defaults to nil/empty.
|
||||
*/
|
||||
@property (nonatomic, copy, readonly) NSDictionary *initialProperties;
|
||||
@property (nonatomic, copy, readonly) NSDictionary *initialProperties DEPRECATED_MSG_ATTRIBUTE ("use appProperties instead");
|
||||
|
||||
/**
|
||||
* The properties to apply to the view. Use this property to update
|
||||
* application properties and rerender the view. Initialized with
|
||||
* initialProperties argument of the initializer.
|
||||
*
|
||||
* Set this property only on the main thread.
|
||||
*/
|
||||
@property (nonatomic, copy, readwrite) NSDictionary *appProperties;
|
||||
|
||||
/**
|
||||
* The class of the RCTJavaScriptExecutor to use with this view.
|
||||
|
|
|
@ -54,6 +54,7 @@ NSString *const RCTContentDidAppearNotification = @"RCTContentDidAppearNotificat
|
|||
RCTBridge *_bridge;
|
||||
NSString *_moduleName;
|
||||
NSDictionary *_launchOptions;
|
||||
NSDictionary *_initialProperties;
|
||||
RCTRootContentView *_contentView;
|
||||
}
|
||||
|
||||
|
@ -72,6 +73,7 @@ NSString *const RCTContentDidAppearNotification = @"RCTContentDidAppearNotificat
|
|||
_bridge = bridge;
|
||||
_moduleName = moduleName;
|
||||
_initialProperties = [initialProperties copy];
|
||||
_appProperties = [initialProperties copy];
|
||||
_loadingViewFadeDelay = 0.25;
|
||||
_loadingViewFadeDuration = 0.25;
|
||||
_sizeFlexibility = RCTRootViewSizeFlexibilityNone;
|
||||
|
@ -182,10 +184,15 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
|||
_contentView.backgroundColor = self.backgroundColor;
|
||||
[self insertSubview:_contentView atIndex:0];
|
||||
|
||||
[self runApplication:bridge];
|
||||
}
|
||||
|
||||
- (void)runApplication:(RCTBridge *)bridge
|
||||
{
|
||||
NSString *moduleName = _moduleName ?: @"";
|
||||
NSDictionary *appParameters = @{
|
||||
@"rootTag": _contentView.reactTag,
|
||||
@"initialProps": _initialProperties ?: @{},
|
||||
@"initialProps": _appProperties ?: @{},
|
||||
};
|
||||
|
||||
[bridge enqueueJSCall:@"AppRegistry.runApplication"
|
||||
|
@ -208,6 +215,27 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
|||
};
|
||||
}
|
||||
|
||||
- (NSDictionary *)initialProperties
|
||||
{
|
||||
RCTLogWarn(@"Using deprecated 'initialProperties' property. Use 'appProperties' instead.");
|
||||
return _initialProperties;
|
||||
}
|
||||
|
||||
- (void)setAppProperties:(NSDictionary *)appProperties
|
||||
{
|
||||
RCTAssertMainThread();
|
||||
|
||||
if ([_appProperties isEqualToDictionary:appProperties]) {
|
||||
return;
|
||||
}
|
||||
|
||||
_appProperties = [appProperties copy];
|
||||
|
||||
if (_bridge.valid && !_bridge.loading) {
|
||||
[self runApplication:_bridge.batchedBridge];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setIntrinsicSize:(CGSize)intrinsicSize
|
||||
{
|
||||
if (!CGSizeEqualToSize(_intrinsicSize, intrinsicSize)) {
|
||||
|
|
Loading…
Reference in New Issue