当前分析的ReactNative版本为0.61.5:
今天的主角是UIManagerModule,我们看它的定义,本质上是个NativeModule,可以通过ReactContext访问。
先来看看它的私有变量mViewManagerRegistry,该类负责管理ViewManagerName和ViewManager关系,可以通过ViewManagerName查找对应的ViewManager。
代码实现如下:
/**
* Class that stores the mapping between native view name used in JS and the corresponding instance
* of {@link ViewManager}.
*/
public final class ViewManagerRegistry {
private final Map<String, ViewManager> mViewManagers;
private final @Nullable UIManagerModule.ViewManagerResolver mViewManagerResolver;
public ViewManagerRegistry(UIManagerModule.ViewManagerResolver viewManagerResolver) {
mViewManagers = MapBuilder.newHashMap();
mViewManagerResolver = viewManagerResolver;
}
public