mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-06 09:13:27 +08:00
Refactor RCTUIManager
Summary: Moved the view creation & property binding logic out of RCTUIManager into a separate RCTComponentData class - this follows the pattern used with the bridge. I've also updated the property binding to use pre-allocated blocks for setting the values, which is more efficient than the previous system that re-contructed the selectors each time it was called. This should improve view update performance significantly.
This commit is contained in:
32
React/Views/RCTComponentData.h
Normal file
32
React/Views/RCTComponentData.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "RCTComponent.h"
|
||||
#import "RCTDefines.h"
|
||||
|
||||
@class RCTShadowView;
|
||||
@class RCTViewManager;
|
||||
|
||||
@interface RCTComponentData : NSObject
|
||||
|
||||
@property (nonatomic, copy, readonly) NSString *name;
|
||||
@property (nonatomic, strong, readonly) RCTViewManager *manager;
|
||||
|
||||
- (instancetype)initWithManager:(RCTViewManager *)manager NS_DESIGNATED_INITIALIZER;
|
||||
|
||||
- (id<RCTComponent>)createViewWithTag:(NSNumber *)tag;
|
||||
- (RCTShadowView *)createShadowViewWithTag:(NSNumber *)tag;
|
||||
- (void)setProps:(NSDictionary *)props forView:(id<RCTComponent>)view;
|
||||
- (void)setProps:(NSDictionary *)props forShadowView:(RCTShadowView *)shadowView;
|
||||
|
||||
- (NSDictionary *)viewConfig;
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user