Подтвердить что ты не робот

React Native: Как экспортировать метод с возвращаемым значением?

Каков наилучший способ экспортировать метод с возвращаемым значением в React Native?

Я знаю, что есть RCT_EXPORT_METHOD, но это работает только для методов (void) и поэтому ничего не возвращает. Предпочтительно, мне не нужно экспортировать весь класс, всего несколько методов.

Другой вариант - иметь обратный вызов, но я хотел бы избежать этого, если это возможно, поскольку он сильно раздувает код в моем случае использования. Есть ли другие варианты, которые я, возможно, пропустил?

4b9b3361

Ответ 1

Вы также можете использовать promises, которые, как правило, выглядят немного лучше в вашей JS.

Цель C:

RCT_REMAP_METHOD(getThing, resolver: (RCTPromiseResolveBlock)resolve
     rejecter:(RCTPromiseRejectBlock)reject)
{
  if( condition ) {
    NSString *thingToReturn = @"ALL OK";
    resolve(thingToReturn);
  } else {
    reject([NSError errorWithDomain:@"com.companyname.app" code:0 userInfo:@{ @"text": @"something happend" }]);
  }
}

Тогда в JS:

async onPress() {
  try {
    const status = await CustomModule.getThing();
    // do something with status
  } catch(e) {
    console.error(e);
  }
}

Ответ 2

Попробуйте вернуть значения с помощью Callbacks

RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback)
{
  NSArray *events = ...
  callback(@[[NSNull null], events]);
}

Ответ 3

Кажется, еще нет. Это должна быть функция поддержки.