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

aji*_*mar 5 java react-native

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

谢谢。

jev*_*lio 4

是的,您可以,只需一些粘合代码。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);
  }
  //...
}
Run Code Online (Sandbox Code Playgroud)

您将需要更多的样板文件(文档中均对此进行了解释)。一旦到位,您可以从 JavaScript 调用它,如下所示:

import { NativeModules } from 'react-native';

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

  });
Run Code Online (Sandbox Code Playgroud)

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