从react-native调用java类方法(不是Android Activity java类)

时间:2018-04-19 09:30:06

标签: java react-native

实际上我是反应原生应用程序开发的新手。我正在尝试使用数据库连接(AWS Dynamo db)开发一个小的react-native应用程序。我选择一个java作为服务器端语言。我想知道,有没有可能在react-native中导入java类(即从react-native访问java方法)。

感谢。

1 个答案:

答案 0 :(得分:3)

是的,您可以使用一些胶水代码。 React Native有一个Native Modules概念,允许您与任何Java代码进行交互。

根据上述链接说明创建原生模块后,您可以使用@ReactMethod注释修饰模块上的任何方法,以使其在JavaScript中可用:

public class YourDynamoDBModule extends ReactContextBaseJavaModule {

  // ...
  @ReactMethod
  public void arbitraryMethod(string query, Promise promise) {
      // do something with your third-party library
        Promise.resolve(yourResponse);
  }
  //...
}

你需要更多的样板(这些都在文档中解释)。一旦到位,您可以通过JavaScript调用它,如下所示:

import { NativeModules } from 'react-native';

NativeModules
  .YourDynamoDBModule
  .arbitraryMethod('...')
  .then(result => {

  });

值得注意的是,所有本机模块调用本质上都是异步的,因此如果您需要将数据传递回JavaScript,则需要使用promises(如上所述)或回调。