【问题标题】:React Native: How to export a method with a return value?React Native:如何导出具有返回值的方法?
【发布时间】:2015-06-28 13:54:40
【问题描述】:

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

我知道有RCT_EXPORT_METHOD,但这仅适用于(void) 的方法,因此不会返回任何内容。最好我不需要导出整个类,只需要几个方法。

另一种选择是进行回调,但如果可能的话,我想避免这种情况,因为它在我的用例中会使代码膨胀太多。还有其他我可能错过的选择吗?

【问题讨论】:

  • 我想知道它是怎么做的。通过使用回调它很好,但除此之外还有其他选择。我们可以在RCT_EXPORT_METHOD中使用那些resolve和reject吗???

标签: javascript objective-c reactjs react-native


【解决方案1】:

您现在也可以使用 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);
  }
}

【讨论】:

  • 我如何在 //do something with status 中使用状态当我试图在日志中打印它时,它显示为 [Object object] 你能解释一下如何打印字符串的值吗?跨度>
  • @chrishale 你如何从Objective C 调用getThing 方法并为其提供数据?
【解决方案2】:

尝试使用Callbacks返回值

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2017-02-06
      • 1970-01-01
      • 2021-03-02
      相关资源
      最近更新 更多