React Native: Как экспортировать метод с возвращаемым значением?
Каков наилучший способ экспортировать метод с возвращаемым значением в React Native?
Я знаю, что есть RCT_EXPORT_METHOD
, но это работает только для методов (void)
и поэтому ничего не возвращает. Предпочтительно, мне не нужно экспортировать весь класс, всего несколько методов.
Другой вариант - иметь обратный вызов, но я хотел бы избежать этого, если это возможно, поскольку он сильно раздувает код в моем случае использования. Есть ли другие варианты, которые я, возможно, пропустил?
Ответы
Ответ 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
Кажется, еще нет. Это должна быть функция поддержки.