在 React Native 中导出具有返回值的方法的最佳方法是什么?
我知道有RCT_EXPORT_METHOD
,但这仅适用于(void)
,因此不返回任何内容的方法。最好我不需要导出整个类,只需要导出几个方法。
另一种选择是有一个回调,但我想尽可能避免这种情况,因为它在我的用例中会使代码膨胀太多。还有其他我可能错过的选择吗?
在 React Native 中导出具有返回值的方法的最佳方法是什么?
我知道有RCT_EXPORT_METHOD
,但这仅适用于(void)
,因此不返回任何内容的方法。最好我不需要导出整个类,只需要导出几个方法。
另一种选择是有一个回调,但我想尽可能避免这种情况,因为它在我的用例中会使代码膨胀太多。还有其他我可能错过的选择吗?
您现在还可以使用 Promise,它在您的 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);
}
}
尝试使用回调返回值
RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback)
{
NSArray *events = ...
callback(@[[NSNull null], events]);
}
好像还没有办法。这应该是一个支持的功能。