Устранение неполадок при загрузке собственного модуля iOS с помощью реакции native - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь найти смысл в родном модуле iOS , код которого сгенерирован djinni.

Согласно React Native doc , вы должны включить макрос RCT_EXPORT_MODULE() в свой код. Этот рабочий образец не.

Позже в документации говорится, что исключением является Swift, где такого макроса нет.

Если я не ошибаюсь, это не так.

Я пытаюсь воспроизвести использование кода, сгенерированного djinni, в моем собственном проекте, но когда я его запускаю, он не работает, потому что React Native не может загрузить мой собственный модуль:

undefined не является объектом (оценка 'HelloWorld.getHelloWorld')

Мне интересно, смогу ли я пройти через код запроса NativeModule:

var HelloWorld = NativeModules.HelloWorld;

Чтобы понять, что происходит.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 02 мая 2018

Хорошо, загадка раскрыта.

Секрет находится в реализации AppDelegate:

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:moduleInitialiser launchOptions:nil];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"ExampleProject"
                                            initialProperties:nil];

Указатель RCTRootView инициализируется вызовом

initWithBridge

Конечно, вы должны предварительно выделить объект RCTBridge.

Макрос RCT_Export_Module не требуется в , который использует вариант , вам просто нужно указать имя модуля:

+ (NSString *)moduleName
{
   return @"HelloWorld";
}

Макрос сделает это автоматически.

Я все еще использовал:

initWithBundleURL

В моем собственном проекте дублируется из базового приложения create-реагировать на приложение.

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                 moduleName:@"ExampleProject"
                                          initialProperties:nil
                                              launchOptions:launchOptions];

РЕДАКТИРОВАТЬ 1 : Хорошо, у меня может быть другая проблема. Он не работает при перезагрузке JavaScript, поэтому приложение запускается только в первый раз. Это также не работает вообще, когда удаленная отладка JS включена. Странно ...

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