React Native:如何导出具有返回值的方法?

Joh*_*ein 22 javascript objective-c reactjs react-native

在React Native中导出具有返回值的方法的最佳方法是什么?

我知道有RCT_EXPORT_METHOD,但这只适用于那些方法,(void)因此不会返回任何东西.我最好不需要导出全班,只需几种方法.

另一个选择是有一个回调,但我想尽可能避免这种情况,因为它在我的用例中夸大了代码.我可能错过了其他任何选择吗?

chr*_*ale 16

你现在也可以使用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" }]);
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在JS中:

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


hew*_*ens 5

尝试使用回调返回值

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


小智 2

看来还没有办法。这应该是一个需要支持的功能。