Что использовать вместо callFunctionOnModule, удаленного в 0.55.0? - PullRequest
0 голосов
/ 06 июня 2019

Мой устаревший проект RN загружает несколько js-пакетов в асинхронном режиме.Между пакетами js имеется встроенная навигация.После выбора вкладки загружается приложение, зарегистрированное AppRegistry.registerComponent('user', () => App);.

, оно основано на callFunctionOnModule, который был удален в 0.55.1 https://github.com/react-native-community/releases/blob/master/CHANGELOG.md#055

https://github.com/facebook/react-native/commit/19a4a7d

Как можноЯ заменяю callFunctionOnModule в терминах 0.59.8 RN

- (void)initializeWithJsCodeLocation:(NSURL *)jsCodeLocation
                          bundleName:(NSString *)bundleName
                       applicationId:(NSString *)applicationId
                   initialProperties:(NSDictionary *)initialProperties {
    if (self.rootView) {
        [self.rootView removeFromSuperview];
    }
    self.jsCodeLocation = jsCodeLocation;
    @weakify(self)
    RCTBridge *bridge = [self.bridgeBuilder bridgeWithDelegate:self
                                                    bundleName:bundleName
                                                 applicationId:applicationId];
    [bridge.batchedBridge dispatchBlock:^{
        @strongify(self)
        self.registeredAppArray = [self ufsl_registeredArrayForBridge:bridge];
        @weakify(self)
        dispatch_async(dispatch_get_main_queue(), ^{
            @strongify(self)
            if ([self.registeredAppArray containsObject:bundleName]) {
                RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                                 moduleName:bundleName
                                                          initialProperties:initialProperties];
                if (self.bundleBackgroundColor) {
                    rootView.backgroundColor = self.bundleBackgroundColor;
                }
                [self addSubview:rootView];
                [rootView autoPinEdgesToSuperviewEdges];
                self.rootView = rootView;

                [self.presenter applicationDidLoad];
            } else {
                [self.presenter applicationDidNotLoadWithWrongName:bundleName];
            }
        });
    }
                                  queue:RCTJSThread];
}

- (void)removeBackgroundColor {
    self.bundleBackgroundColor = UIColor.clearColor;
}

#pragma mark - Private

- (NSArray<NSString *> *)ufsl_registeredArrayForBridge:(RCTBridge *)bridge {
    JSValue *value = [bridge callFunctionOnModule:kUFSAppRegistryModuleName
                                           method:kUFSGetAppKeysMethodName
                                        arguments:nil
                                            error:nil];
    if (!value.isUndefined && value.isArray) {
        return [value toArray];
    } else {
        return @[];
    }
}```

callFunctionOnModule is not defined.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...