React Native Bridge не возвращает правильное значение javascript - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь собрать собственный модуль для использования AVFoundation. Мне нужно написать функцию в Swift, которая возвращает значение javascript, поэтому я следовал инструкциям Экспорт Swift .

Вот мои 3 полученных файла:

MediaManager.swift

@objc(MediaManager)
class MediaManager: NSObject {

  @objc(getFrame)
  func getFrame() -> Int {
    return 123;
  }
}

MediaManagerBridge.m

#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(MediaManager, NSObject)

RCT_EXTERN_METHOD(getFrame)

+ (BOOL)requiresMainQueueSetup
{
  return NO;
}

@end

Bridging-Header.h

#import <React/RCTBridgeModule.h>

Когда я запускаю console.log(MediaManager.getFrame()), я получаю "undefined". Когда я запускаю console.log(MediaManager.getFrame), я получаю:

ƒ fn() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }

        var lastArg = args.length …

, что определенно не является функцией, которую я экспортировал. Мне сложно разобрать документы - что я тут не так сделал?

1 Ответ

1 голос
/ 12 января 2020

Возвращаемое значение только для констант.

Используйте это

  func getFrame(_ callback: RCTResponseSenderBlock) {
callback([123])

}

и в реагирующем нативе сделайте это

MediaManager.getFrame(
      (value) => console.log(value),
    )
...